使用sed

时间:2018-03-12 09:21:27

标签: regex linux shell sed

我正在尝试使用SED删除包含单词“DEBUG”的日志文件中的行。 DEBUG可以是:

  • 该行的第一个字。
  • 该行内的一个字,至少包含一个空格。

以下正则表达式正常:

(?m)( |^)DEBUG\s

但是当我尝试将它与sed一起使用时,没有任何效果。

sed '/(?m)( |^)DEBUG\s/d' infile.log > result.txt

我试图逃避像()或\或甚至^的somme字符,但没有任何成功。 谢谢你的帮助。

例如,我有一个包含以下内容的文件:

...
DEBUG aaaaaaaaaaaaa aaaaa
DEBUG bbbbbbbb bbb bbbb 
ccc cccDEBUGcccc cccc cc
dddDEBUG dddd ddd
DEBUGeeee eee eeee
fff fff fff fff ff DEBUG fff
...

所以预期的结果应该是:

...
DEBUG aaaaaaaaaaaaa aaaaa
DEBUG bbbbbbbb bbb bbbb 
fff fff fff fff ff DEBUG fff
...

但相反,所有行都会出现在结果文件中。

1 个答案:

答案 0 :(得分:1)

您好,实际上这里不需要sed命令。 egrep命令可以解决您的问题。

 egrep " \DEBUG|^DEBUG\ " infile.log > result.txt

现在你的输出文件result.txt如下所示: -

DEBUG aaaaaaaaaaaaa aaaaa
DEBUG bbbbbbbb bbb bbbb 
fff fff fff fff ff DEBUG fff