在 AWK 中使用 and 运算符对多列进行正则表达式负匹配
Regex negative match on multiple column with and operator in AWK
我有带有示例日志的简单文件:
192.168.1.117 60921 224.0.0.252 5355 yahoo.com
192.168.1.117 60900 192.168.1.118 5356 118.1.168.192.in-addr.arpa
192.29.1.221 5943 211.29.132.12 4325 webex.com
192.168.1.221 5943 192.29.132.12 4325 lizzard.com
我通过以下方式使用 awk 来过滤内部流量和 arpa 域:
awk '( !~ ^([192.168]|[192.29]) && !~ ^([192.168]|[192.29])) || ~ (in\-addr\.arpa$)' < filein
我不确定我做错了什么,因为我没有得到任何输出?
您没有在 //
之间包裹正则表达式。此外 []
的使用是错误的。
应该是:
awk '( !~ /^192\.(168|29)/ && !~ /^192\.(168|29)/) || ~ /in\-addr\.arpa$/' file
我有带有示例日志的简单文件:
192.168.1.117 60921 224.0.0.252 5355 yahoo.com
192.168.1.117 60900 192.168.1.118 5356 118.1.168.192.in-addr.arpa
192.29.1.221 5943 211.29.132.12 4325 webex.com
192.168.1.221 5943 192.29.132.12 4325 lizzard.com
我通过以下方式使用 awk 来过滤内部流量和 arpa 域:
awk '( !~ ^([192.168]|[192.29]) && !~ ^([192.168]|[192.29])) || ~ (in\-addr\.arpa$)' < filein
我不确定我做错了什么,因为我没有得到任何输出?
您没有在 //
之间包裹正则表达式。此外 []
的使用是错误的。
应该是:
awk '( !~ /^192\.(168|29)/ && !~ /^192\.(168|29)/) || ~ /in\-addr\.arpa$/' file