如何在打击之后grep这个词?

时间:2014-04-11 23:57:18

标签: bash grep

尝试获取MAC地址,a4:1f:72:6e:2a:cf,从这样的结果(见下文)保存在变量$ NewMAC中。发生这种情况的方法是将arp-scan输出到文本文件中,这就是结果。

Interface: eth2, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 1 hosts (http://www.nta-monitor.com/tools/arp-scan/)

192.168.1.100    a4:1f:72:6e:2a:cf    (Unknown)

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 1 hosts scanned in 0.143 seconds (6.99 hosts/sec). 1 responded

2 个答案:

答案 0 :(得分:1)

grep -E ' ([[:xdigit:]]{2}:){5}[[:xdigit:]]{2} '

这将选择包含以太网地址的行。如果你有GNU grep,你可以使用-o来选择匹配的文本。如果空白很重要(你绝对不能拥有它们),那么你必须更加粗鲁(不要寻找空白)或使用较少的标准符号,例如\b来表示单词的开头/结尾。

因此:

NewMAC=$(arp-scan ... | grep -E -o '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b')

如果您没有GNU grep,可以使用| awk '{print $2}'打印第二列输出。

NewMAC=$(arp-scan ... | grep -E ' ([[:xdigit:]]{2}:){5}[[:xdigit:]]{2} ' | awk '{print $2}')

答案 1 :(得分:1)

awk '/^[0-9]+[.][0-9]+[.][0-9][.][0-9]+/ {print $2}' arp-scan-output.txt