从Arp-Scan Bash输出中删除重复项

时间:2015-04-10 16:00:21

标签: linux bash awk

我需要一种方法来从此IP列表中删除重复项。

arp-scan -I usb0 --file=ClassB.txt -N -r 1 --interval=50 | grep -E '([a-f0-9]{2}:){5}[a-f0-9]{2}' | awk '{print $1}' > IPList.txt

我应该介入的任何想法或方向? 我需要将我的另一个脚本的IP列表汇总在一起。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用sort -u仅打印唯一的行:

arp-scan ...  | awk '/([a-f0-9]{2}:){5}[a-f0-9]{2}/{print $1}' | sort -u  > IPList.txt

作为奖励我删除了你的grep | awk管道,因为awk完全能够自己匹配模式。

你甚至可以用awk完成整个事情:

arp-scan ...  | awk '/([a-f0-9]{2}:){5}[a-f0-9]{2}/&&!seen[$1]++{print $1}' > IPList.txt

这只会在第一个字段尚未添加到数组seen时打印,因为!seen[$1]++只会为真一次。