如何截断数字的第一个数字?

时间:2016-05-17 23:37:29

标签: sed grep

例如,我的文件包含以下数据:

$ cat sample.txt 

19999119999,string1,dddddd
18888135790,string2,dddddd
15555555500,string3,dddddd

这是一个示例数据。我们怎样才能从每行中删除第一个数字?我的输出应该是:

$ cat output.txt
9999119999,string1,dddddd
8888135790,string2,dddddd
5555555500,string3,dddddd

有没有办法用grep或sed解析每一行字符? 或者任何其他方式来获得所需的输出?

3 个答案:

答案 0 :(得分:4)

您只需要在第二个字符上打印:

$ cut -c2- file
9999119999,string1,dddddd
8888135790,string2,dddddd
5555555500,string3,dddddd

或者,使用sed删除第一个字符:

$ sed 's/^.//' file
9999119999,string1,dddddd
8888135790,string2,dddddd
5555555500,string3,dddddd

答案 1 :(得分:1)

试试这个:

$ sed -r 's/^[0-9](.*)/\1/' sample.txt

<强>输出:

9999119999,string1,dddddd
8888135790,string2,dddddd
5555555500,string3,dddddd
  • ^ [0-9] - 每行的第一位数
  • (。*) - 除第一位数字外的每一行的内容
  • \ 1 - 表示(。*)
  • 的内容

抱歉我的英语不好。

答案 2 :(得分:0)

Grep可以通过后面的方式来解决这个问题。为此,您需要-P选项:

grep -Po '(?<=^\d)(.+)' file   

或简写:

grep -Po '^\d\K.+' file

(?<=^\d) / ^\d\K部分是与第一个数字相匹配的背后。