【发布时间】:2016-05-17 23:37:28
【问题描述】:
例如,我的文件有以下数据:
$ 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 来解析每一行字符? 或者任何其他方式来获得所需的输出?
【问题讨论】:
-
这是一个简单的 sed 字符串:sed 's/^[0-9]//'
-
所以删除行中的第一个字符,对吧?
-
如果第一个字段中的数字是个位数的数字怎么办?该数字是否仍应删除,不留下任何数字?如果不是(因此您只想截断多位数字的第一个数字),那么您需要比
sed 's/^[0-9]//'更复杂一点——您需要sed 's/^[0-9]\([0-9]\)/\1/'(在行首查找两位数字)并仅替换第二个)。如果您确信第一个字段中永远不会有一位数,您可以使用原始的更简单的脚本 - 使用正则表达式通常是稳健性和简单性之间的平衡行为。