首页 > 解决方案 > 当事先不知道行序时,如何可靠地从标准输出中提取特定字符串?

问题描述

networksetup -listallhardwareports命令返回 Mac 中所有网络设备的硬件 MAC 地址。

00:0c:29:5b:14:b3当事先不知道行序(因此我不能使用)时,如何可靠地从标准输出中提取networksetup -listallhardwareports | sed -n 4p | awk '{print $3}'

Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 00:0c:29:5b:14:b3

Hardware Port: Bluetooth PAN
Device: en3
Ethernet Address: e1:7e:be:a6:0b:12

标签: shell

解决方案


networksetup -listallhardwareports| awk -v RS= '/en0/{print $NF}'
00:0c:29:5b:14:b3

说明:此awk命令将所有多行记录转换为单行记录。这是通过取消设置( -v RS=) awk 的默认记录分隔符( RS) 来完成的。en0如果任何行(或记录)中包含字符串,则稍后匹配。


推荐阅读