我需要了解如何使用sed删除文本文件中行尾的最多 10位数。
例如,如果我有这个:
ajsdlfkjasldf1234567890
asdlkjfalskdjf123456
adsf;lkjasldfkjas123
应该成为:
ajsdlfkjasldf
asdlkjfalskdjf
adsf;lkjasldfkjas
任何人都可以帮忙吗?
我有这个,但它不起作用:
sed 's/[0-9]{10}$//g'
答案 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'