【发布时间】:2015-04-11 00:11:56
【问题描述】:
我需要一种方法来从此 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 列表。
谢谢!
【问题讨论】:
我需要一种方法来从此 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 列表。
谢谢!
【问题讨论】:
使用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]++ 只会为真一次。
【讨论】:
tee 以执行此操作