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