如何用sed替换这种字符串?

时间:2014-03-30 15:25:28

标签: regex linux replace sed

我有一个包含这种字符串的日志文件:

[1234(0) #1] 
[1234(1) #2] 
[1234(3) #0] 

依此类推......(注意每个字符串中的最后一个空格)

所以,我需要用什么都不替换那些字符串。我试图执行:

$ sed -i 's/\[1234\(\d\)\s#\d\]\s//g' log.txt

但它似乎没有用......确实如果那时我跑:

$ grep '\[1234([0-9])\s#[0-9]\]\s' log.txt

我仍然收到这些字符串......出了什么问题?

2 个答案:

答案 0 :(得分:5)

您的版本可能不支持\s\d。此外,()默认情况下不需要转义。以下适用于我

sed 's/\[1234([[:digit:]])[[:space:]]#[[:digit:]]\][[:space:]]//g' file

答案 1 :(得分:2)

如果您喜欢使用\s\d,则可以使用代替进行就地编辑。 :

ex +'%s/\[1234(\d)\s#\d\]\s//g' +'wq' ./log.txt