sed删除行尾的数字

时间:2012-05-22 17:51:12

标签: regex linux sed

我需要了解如何使用sed删除文本文件中行尾的最多 10位数。

例如,如果我有这个:

ajsdlfkjasldf1234567890
asdlkjfalskdjf123456
adsf;lkjasldfkjas123

应该成为:

ajsdlfkjasldf
asdlkjfalskdjf
adsf;lkjasldfkjas

任何人都可以帮忙吗?

我有这个,但它不起作用:

sed 's/[0-9]{10}$//g'

3 个答案:

答案 0 :(得分:4)

你试过这个:

     sed 's/[0-9]+$//'

您的命令只会匹配并删除行尾的10个数字,并且只有在您启用了扩展正则表达式(-E或-r,具体取决于您的sed版本)时。

你应该试试

     sed -r 's/[0-9]{1,10}$//'

答案 1 :(得分:1)

以下内容应该有效:

sed 's/[0-9]\{1,10\}$//' file

sed中的正则表达式语法需要括号前的反斜杠才能使用它们进行重复,除非您使用扩展的正则表达式选项。

答案 2 :(得分:0)

快速查看here建议你试试这个:

$ sed 's/[0-9]\{0,10\}$//g'
除非你切换到扩展的正则表达式语法,否则

{}应该被转义:

$ sed -r 's/[0-9]{0,10}$//g'