使用正则表达式来查找文件

使用正则表达式来查找文件

我有一个包含许多日志行的文件。

我想要返回包含单词“fail”但不包含以下模式的文件:

Failed any test here _fr in Pro-any text here

因此,如果它包含:Pro 中的 _fr

然后忽略该行,即使其中有失败一词。

答案1

让我们考虑这个测试文件:

$ cat >test.log
keep fail
omit fail  _fr in Pro-

要查找符合条件的所有行:

$ awk '/[fF]ail/ && ! /_fr in Pro-/' test.log
keep fail

仅打印包含符合条件的行的文件的名称:

$ awk '/[fF]ail/ && ! /_fr in Pro-/ {print FILENAME; exit}' *.log
test.log

怎么运行的:

awk 隐式地逐行读取文件。条件/[fF]ail/ && ! /_fr in Pro-/匹配任何包含Failfail但不包含 的行_fr in Pro-。在 awk 中&&表示逻辑与,而!表示逻辑非。

拒绝_fr in Pro-两者_en in Pro-

考虑这个测试文件:

$ cat test.log
keep fail
omit fail  _fr in Pro-
omit fail  _en in Pro-

要拒绝这两种形式:

$ awk '/[fF]ail/ && ! /_(fr|en) in Pro-/' test.log
keep fail

相关内容