我有一些防火墙日志,我想找到多个唯一值。我需要在 /var/log/iptables 中找到源 IP 和目标端口的每个唯一组合,这些组合采用这种格式。
SRC=123.123.123.123
DPT=137
因此,如果源 IP 123.123.123.123 在多个端口上多次出现,我希望看到,但对于每个 SRC/DPT 组合只有一次。
谢谢!
我有一些防火墙日志,我想找到多个唯一值。我需要在 /var/log/iptables 中找到源 IP 和目标端口的每个唯一组合,这些组合采用这种格式。
SRC=123.123.123.123
DPT=137
因此,如果源 IP 123.123.123.123 在多个端口上多次出现,我希望看到,但对于每个 SRC/DPT 组合只有一次。
谢谢!
您可以尝试“grep AND”,请参阅链接中的示例: http ://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/
这个 awk 解决方案可能会有所帮助。第一个 awk 命令将每对连续的SRC
和DPT
行组合成一行。该命令的输出然后通过管道传输到第二个 awk 命令,该命令提供唯一的输出,保留原始顺序
awk '/^SRC|^DPT/{ORS=$0 ~ /^SRC/?" ":"\n"; print}' file.* | awk '!a[$0]++'
如果每行存在多个SRC
,DPT
条目,则以下内容应该有效
grep -oE 'SRC=[[:digit:].]+[[:space:]]+DPT=[[:digit:].]+' file.txt | awk '!a[$0]++'