我想要一个可以转换此输入的命令行:
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
signal: -68.00 dBm
last seen: 0 ms ago
SSID: ENH202.FW
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0
到此输出行:
SSID: ENH202.FW -68.00 dBm
这受以下读取可用wifi网络的命令的启发:
sudo iw dev wlan0 scan | grep SSID
通过打印包含“ SSID”的单行的每次出现来列出所有网络。我希望通过相同的扫描来给出每个SSID的信号强度。
是否可以使用命令行工具获取包含信号强度的列表?
答案 0 :(得分:1)
sed命令可以做到:
sed -n -e '/signal:/h' -e '/SSID:/{G;s/signal://;s/\n//;p}' <inputfile>
说明:
-n
标志告诉sed不要打印行。
第一个-e
表达式在其中找到带有“ signal:”的行,并将其放在保留空间中。第二个命令在其中找到一行带有“ SSID:”的行,G
将保留空间添加到此行,s/signal://
删除“ signal:”部分,而s/\n//
删除回车符。最后,p
告诉sed打印图案空间。
答案 1 :(得分:1)
这将在到达信号线时设置变量st
的值,然后在SSID线之后打印。
sudo iw dev wlan0 scan | awk '/signal:/{st=$2$3} /SSID:/{print $0" "st}'