grep匹配后得到下一个单词

pro*_*fan 2 bash awk grep

我正在使用此命令检索连接到接入点的客户端的信号平均功率:

iw dev wlan0 station dump | grep -E 'Station|signal avg': 
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

"my_MAC_Address"(在wlan0上)

信号平均: -46 dBm

粗体是我与grep匹配的东西,我只想在匹配后得到这个词,即MAC地址和数字-46.我一直在玩awk但没有成功.希望你能帮我!

Ale*_*-A. 7

iw dev wlan0 station dump | grep -Po '(?<=Station\s|signal avg:\s)[^\s]*'
Run Code Online (Sandbox Code Playgroud)

此正则表达式使用所谓的lookbehind语法.你可以在这里阅读它

示例输出:

00:11:22:33:44:55
-40
Run Code Online (Sandbox Code Playgroud)

更新:

感谢您对此答案进行投票.现在我知道另一个解决方案

iw dev wlan0 station dump | grep -Po '(Station\s|signal avg:\s)\K[^\s]*'
Run Code Online (Sandbox Code Playgroud)

这实际上是上述解决方案的简写.\K基本上意味着"在它出现之前忘记一切".