我正在尝试使用 SED 删除日志文件中包含单词“DEBUG”的行。 调试可以是:
- 该行的第一个词。
- 行内至少有一个空格的单词。
以下正则表达式工作正常:
(?m)( |^)DEBUG\s
但是当我尝试将它与 sed 一起使用时,没有任何效果。
sed '/(?m)( |^)DEBUG\s/d' infile.log > result.txt
我试图转义某些字符,例如 () 或\甚至 ^,但没有成功。 感谢您的帮助。
例如,我有一个文件包含:
...
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
...
但是,所有行都出现在结果文件中。
最佳答案
您好,实际上您在这里不需要 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
关于regex - 使用 sed 转义正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231704/