我正在将一系列正则表达式模式传递给
这只是一个模式列表,像
我正在尝试做与上述相反的事情,而不是匹配具有特定IP地址和错误的行,因此"!1.2.3.4.*已爆炸"将匹配除了1.2.3.4之外的任何其他syslog行,告诉我它已经爆炸了。我必须能够包含一个IP地址来进行不匹配。
我在Stack Overflow上看到了各种类似的帖子。然而,它们使用的正则表达式模式似乎无法与
这发生在以下脚本中;
grep
,以便与syslog文件进行匹配检查。通常它们用于匹配IP地址和日志条目。grep "1\.2\.3\.4.*Has exploded" syslog.log
这只是一个模式列表,像
"1\.2\.3\.4.*已爆炸"
这部分我正在循环中传递,所以我不能传递"-v",例如。我正在尝试做与上述相反的事情,而不是匹配具有特定IP地址和错误的行,因此"!1.2.3.4.*已爆炸"将匹配除了1.2.3.4之外的任何其他syslog行,告诉我它已经爆炸了。我必须能够包含一个IP地址来进行不匹配。
我在Stack Overflow上看到了各种类似的帖子。然而,它们使用的正则表达式模式似乎无法与
grep
一起工作。对于grep
,有什么有效的示例吗?这发生在以下脚本中;
patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"
for i in {1..3}
do
grep "${patterns[$i]}" logfile.log
done
patterns[3]="\!9\.10\.11\.12.*Has exploded"
更改为patterns[3]="(?<!9\.10\.11\.12).*Has exploded"
和grep "${patterns[$i]}" logfile.log
更改为grep -P "${patterns[$i]}" logfile.log
PCRE默认假定更多的元字符,因此其他匹配表达式中可能需要删除一些转义符。 - Codex24