bash - grep匹配后获取下一个单词

标签 bash awk grep

<分区>

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

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 语法。你可以阅读它here

示例输出:

00:11:22:33:44:55
-40

更新:

感谢您为这个答案投票。现在我知道了另一种解决方案:

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

这实际上是上述解决方案的简写。 \K 基本上意味着“在发生之前忘记一切”。

关于bash - grep匹配后获取下一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708849/

相关文章:

linux - tee 是否转发尚未进入文件的数据?

grep - 如何让 grep 跳过搜索目录?

regex - 使用 awk 从两列中获取 ID

bash - 如何在 bash 中将列除以常量

linux - 使用我的 awk 脚本删除无用/空行

bash - 为什么一定要逃走 |和 + 在撇号之间的 grep?

mysql - 将字节计算为 MB

bash - 在 awk 中使用一个变量,然后将输出输入到另一个变量中

bash - 将目录的快捷方式(软链接(soft link))添加到全局 PATH 以便可以从任何地方访问它

linux - 如何制作一个脚本,在两个参数相似的情况下执行命令 5 分钟?