例如,我的文件包含以下数据:
$ 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解析每一行字符? 或者任何其他方式来获得所需的输出?
答案 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
抱歉我的英语不好。
答案 2 :(得分:0)
Grep可以通过后面的方式来解决这个问题。为此,您需要-P
选项:
grep -Po '(?<=^\d)(.+)' file
或简写:
grep -Po '^\d\K.+' file
(?<=^\d)
/ ^\d\K
部分是与第一个数字相匹配的背后。