grep匹配和不匹配的字符串部分?

时间:2020-10-28 15:15:24

标签: regex grep

我有一个包含字符串errorCode:nullerrorCode: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-.* 

,但这不是正确的正则表达式匹配。该怎么办?

2 个答案:

答案 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