如何为多个唯一值grep文件?

时间:2013-10-22 14:07:18

标签: grep

我有一些防火墙日志,我想找到多个唯一值。我需要找到源IP和目标端口的每个唯一组合,这些格式在/ var / log / iptables中。

SRC=123.123.123.123
DPT=137

因此,如果源IP 123.123.123.123在多个端口上多次出现,我想看到,但是,每个SRC / DPT组合只需要一次。

谢谢!

2 个答案:

答案 0 :(得分:0)

这个awk解决方案可能有所帮助。第一个awk命令将每对连续的SRCDPT行组合成一行。然后将此命令的输出传送到第二个awk命令,该命令提供唯一的输出,保留原始顺序

awk '/^SRC|^DPT/{ORS=$0 ~ /^SRC/?" ":"\n"; print}' file.* | awk '!a[$0]++'

如果每行存在多个SRCDPT个条目,则以下内容应该有效

grep -oE 'SRC=[[:digit:].]+[[:space:]]+DPT=[[:digit:].]+' file.txt | awk '!a[$0]++'

答案 1 :(得分:0)

您可以尝试“grep AND”,请参阅链接中的示例: http://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/