regex - 使用 sed 转义正则表达式

标签 regex linux shell sed

我正在尝试使用 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/

相关文章:

c# - c# 中的正则表达式驼峰式

c++ - 使用 g++ 在终端中运行 .cpp 文件时出错

linux - 在 .zshrc : No such file or directory 中使用 grep 命令

shell - 命令/别名可以可变吗?

linux - 为什么 "let"在 Ubuntu 上不能与 "sh myscript"一起使用,而与 "./myscript"一起使用?

javascript - 正则表达式编号后跟可能的单词列表

python - 如何从字典中替换数据框列中的特定值?

javascript - 禁止输入标点符号

javascript - Linux 上的 Node.js UDP 子网广播失败

bash - 使用 Grep(或任何其他命令行工具)来计算包含不同模式的行