我有一个包含字符串errorCode:null
或errorCode:404
等的日志文件。我想查找errorCode不为null的所有事件。
我使用:
grep -i "errorcode" -A 10 -B 10 app.2020-.* | grep -v -i "errorCode:null"`,
grep -v -i 'errorcode:[0-9]^4' -A 10 -B 10 app.2020-.*
,但这不是正确的正则表达式匹配。该怎么办?
答案 0 :(得分:1)
如果您有gnu-grep
,请使用-P
选项在正则表达式中使用负前瞻:
grep -Pi 'errorcode(?!:null)' -A 10 -B 10 app.2020-.*
如果您没有gnu grep
,请尝试以下awk
:
awk '/errorcode/ && !/errorcode:null/' app.2020-.*
在awk
中需要更多的代码才能匹配-A 10 -B 10
的{{1}}个选项。
答案 1 :(得分:1)
我不知道您为什么使用-A 10 -B 10
,我刚刚使用了以下命令,并且一切正常:
grep -i "ErrorCode" test.txt | grep -v -i "Errorcode:null"
此文件内容:
Errorcode:null
Errorcode:405
Errorcode:504
Nonsens
这是命令的输出:
Errorcode:405
Errorcode:504