我有一个带有一堆日志行的文件。
我想返回其中包含单词“ fail”但不包含模式的文件:
Failed any test here _fr in Pro-any text here
因此,如果其中包含:Pro-中的_fr
然后忽略该行,即使其中包含失败字样。
让我们考虑一下这个测试文件:
$ 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-/
匹配包含Fail
或fail
不包含的任何行_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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句