我正在使用此命令来检索连接到接入点的客户端的信号平均功率:
iw dev wlan0 station dump | grep -E 'Station|signal avg':
我得到以下信息:
站“my_MAC_Address”(在 wlan0 上)
信号平均值: -46 dBm
粗体字是我与 grep 匹配的内容,我只想得到匹配后的单词,即 MAC 地址和数字 -46。我一直在玩 awk 但没有成功。希望你能帮我!
iw dev wlan0 station dump | grep -Po '(?<=Station\s|signal avg:\s)[^\s]*'
此正则表达式使用所谓的lookbehind
语法。你可以在这里阅读
示例输出:
00:11:22:33:44:55
-40
感谢您投票赞成这个答案。现在我知道另一种解决方案:
iw dev wlan0 station dump | grep -Po '(Station\s|signal avg:\s)\K[^\s]*'
这实际上是上述解决方案的简写。\K
基本上意味着“在它发生之前忘记一切”。
您也可以使用两个 grep 来执行此操作
iw dev wlan0 station dump | grep -E 'Station|signal avg' | grep -o [^'Station|signalavg'].*
一种可能的 awk 解决方案可以快速和松散地使用空格:
... | awk '$1 == "Station" { print $2 }
$1 $2 == "signalavg:" { print $3 }'