我对AWK的经验很少,但它现在似乎是我最好的工具。
我正在尝试使用OS X中的 airport -s 命令获取附近BSSID的列表。输出如下所示:
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
MyWireless 00:11:22:33:44:55 -85 64 N US WPA(PSK/TKIP/TKIP) WPA2(PSK/TKIP/TKIP)
Your Wireless 66:77:88:99:00:11 -84 64 N US WPA(PSK/TKIP/TKIP) WPA2(PSK/AES/TKIP)
很明显我正在寻找第二栏。所以我试过了:
airport -s | awk '{print $2}'
这样可行,直到我的SSID名称中包含空格。我已经尝试将IFS设置为选项卡,FS设置为选项卡,似乎没有任何效果。
我一直这样:
00:11:22:33:44:55
您
我希望最终得到一个简单的清单:
00:11:22:33:44:55
66:77:88:99:00:11
我知道这是一个单线解决方案,所以我真的很尴尬,我甚至不得不问......请善待。 :)
答案 0 :(得分:4)
似乎regexp可能更适合。也许只是一个简单的egrep -o
airport -s | egrep -o '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}'
答案 1 :(得分:0)
我很想知道你如何设置FS到tab,因为如果机场在列之间输出一个标签,这应该有用。
您还可以使用正则表达式作为字段分隔符(至少在gawk中)。这将处理字段之间有一个或多个选项卡的情况:
airport -s | awk -F'\t+' '{print $2}'
答案 2 :(得分:0)
很简单,你只需要遍历每个字段并检查模式
airport -s | awk 'NR>1{ for(i=1;i<=NF;i++){if($i~/^[0-9][0-9]:/){print $i}}}'