在 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