基于字符串否定一行,即使它包含我想要的另一个字符串

时间:2013-08-20 09:00:23

标签: regex perl

我正在尝试根据错误,异常等关键字过滤服务器日志文件中的行并为其着色。

perl -ne 'print if s/e-business|exception|environment|error/\033[1;31m$&\033[0m/gi'

到目前为止它一直在正常工作,但问题是我想忽略一个特定的错误。假设关键字TEST,我可以否定它,但这行也包含错误,异常关键字。我已经尝试过前瞻和后瞻,但问题是错误,异常,TEST不会来固定的地方。

那么,我怎样才能忽略包含TEST的行(不要大意),即使它包含我想要的其他关键词?

注意:我已经在grep中完成了它,但我有兴趣在perl中完成它。

1 个答案:

答案 0 :(得分:3)

只需使用第二个正则表达式

print if /error/i and !/test/i

或类似的东西。