2

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

例如,如果我有这个:

ajsdlfkjasldf1234567890
asdlkjfalskdjf123456
adsf;lkjasldfkjas123

它应该变成:

ajsdlfkjasldf
asdlkjfalskdjf
adsf;lkjasldfkjas

谁能帮忙?

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

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

3 回答 3

7

你有没有试过这个:

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

您的命令只会匹配并删除行尾的 10 位数字,并且仅在启用扩展正则表达式(-E 或 -r,取决于您的 sed 版本)的情况下。

你应该试试

     sed -r 's/[0-9]{1,10}$//'
于 2012-05-22T17:55:12.507 回答
1

以下应该有效:

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

中的正则表达式语法sed要求括号前的反斜杠用于重复,除非您使用扩展的正则表达式选项。

于 2012-05-22T17:58:00.567 回答
0

在这里快速浏览一下建议你应该试试这个:

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

{ } 应该被转义,除非你切换到扩展的正则表达式语法:

$ sed -r 's/[0-9]{0,10}$//g'
于 2012-05-22T17:54:30.013 回答