我尝试使用 iwlist 命令在命令行中获取多个信息,例如获取 Mac 地址和 ESSID。我尝试使用
# iwlist wlan0 scan|egrep 'Address|ESSID'
但我不想要所有的行,而只想要结果“例如”
# 00:13:33:83:36:F7
# Essid name
有什么办法可以得到它吗?谢谢。
答案1
你尝试过 awk 吗?
$> iwlist wlan0 scan | egrep 'Address|ESSID' | awk -F : '{ $1="";print}'
00 24 7E 1F 7B 4D
"YouShallNotPass!"
使用 -FI 将分隔符改为冒号:
,可惜的是,它从地址中取出了其他冒号,这可以通过设置 OFS 来补救,如下所示:
$ iwlist wlan0 scan | grep Add | awk -F : '{OFS=":";$1="";print substr($0, 3) }'
00:24:7E:1F:7B:4D
查看“iwlist ... scan”本身的结果,它们并不总是有规律的。我应该提到你不会通过这种方式得到的另外两行:
- 质量和信号(没有冒号),改用
iwlist wlan0 scan | grep Quality | awk '{print $3}' | awk -F = '{print $2}'
用于信号iwlist wlan0 scan | grep Quality | awk '{print $1}' | awk -F = '{print $2}'
追求品质
- 比特率(嗯,在我的例子中,有三行比特率,其中一行没有冒号,只有值 - 显然上面的 Awk 脚本错过了它)。
我不太清楚比特率到底显示什么,所以不知道您的使用情况以及这在许多 WiFi 驱动程序/卡/其他之间是否存在差异,我缺乏可在此处提供帮助的信息。
请注意 - 还有其他选择,但你隐瞒了你需要什么以及为什么这么做,所以我给了你简单的(如果很长)Awk 特定解决方案。可以通过 Perl 正则表达式甚至 Bash 获得相同的信息。