我们在工作中使用 HP SiteScope 系统来监控日志,并在捕获到特殊字符串或字符串组合时收到警报。
有一个字段放置了捕获字符串的正则表达式,但是我想排除一些我们用正则表达式捕获的结果。例如:
grep -E '(GOOD_STRING1|GOOD_STRING2)' | grep -v BAD_STRING
需要转换成单个正则表达式。类似这样的:
grep -E '(GOOD_STRING1|GOOD_STRING2)!BAD_STRING)'
那可能吗?
答案1
您可以使用 Perl 正则表达式来实现这一点:
$ echo 'GOOD_STRING1
> GOOD_STRING1BAD_STRING' | grep -P '(GOOD_STRING1|GOOD_STRING2)(?!BAD_STRING)'
GOOD_STRING1