过滤掉某个IP adreess

时间:2016-09-14 15:29:20

标签: regex

寻找合适的正则表达式来过滤掉各种IP地址:

假设我有一个这样的日志文件:

Sep 14 12:37:03 100.100.100.145:64439 -> 180.180.150.2:25 (TCP) SMTP
Sep 14 15:36:01 100.100.100.145:64439 -> 180.180.180.2:25 (TCP) SMTP
Sep 14 12:37:03 100.100.100.145:64439 -> 180.180.180.2:25 (TCP) SMTP
Sep 14 15:36:01 100.100.100.145:64439 -> 180.180.180.2:25 (TCP) SMTP
Sep 14 12:37:03 100.100.100.145:64439 -> 180.180.180.2:25 (TCP) SMTP
Sep 14 15:36:01 100.100.100.145:64439 -> 180.180.180.2:25 (TCP) SMTP

我能够搜索:

\b180\.180\.180\.2\:25\b.*SMTP

但我想找到一切不正确的SMTP服务器,所以我寻找一个"负面词边界"。

对此有何建议?

2 个答案:

答案 0 :(得分:1)

当然,如果支持 外观

(?!.*\b(?:180\.180\.1[58]0\.2)\b)^.+$

请参阅a demo on regex101.com

答案 1 :(得分:0)

awk '$6 ~ /^180\.180\.1[58]0\./ && $6 !~ /\.180\.2:25$/ && $8 == "SMTP"'

将打印与第一个正则表达式匹配的行而不是第二个正则表达式。

你的问题并不能说明这是否正是你想要的,但它应该会让你开始。