如何从networksetup输出中提取Wi-Fi网卡的Device ID(如en0)
提取Wi-Fi网卡Device ID的几种方法
针对你通过networksetup -listallhardwareports输出的内容,这里提供三种基于grep、sed、awk工具的提取方案,都能精准拿到Wi-Fi对应的Device ID(比如你的en0):
方法1:grep + sed 组合实现
这个方案先定位Wi-Fi相关的行,再提取目标内容:
networksetup -listallhardwareports | grep -A1 "Wi-Fi" | sed -n 's/Device: //p'
解释:
grep -A1 "Wi-Fi":找到包含"Wi-Fi"的行,同时输出它的下一行(也就是Device所在行)sed -n 's/Device: //p':只处理替换后的结果,把行首的"Device: "去掉,只保留后面的Device ID
方法2:纯awk一步实现
awk非常适合处理这种行关联的文本提取,一行命令搞定:
networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}'
解释:
- 当awk匹配到包含"Wi-Fi"的行时,
getline会读取下一行内容 - 然后直接打印该行的第二列(也就是"Device: "后面的en0)
方法3:纯sed实现
sed也能通过行跳转完成提取,逻辑清晰:
networksetup -listallhardwareports | sed -n '/Wi-Fi/{n;s/Device: //p}'
解释:
-n开启静默模式,只输出我们指定的内容/Wi-Fi/{n}:匹配到Wi-Fi行后,跳转到下一行s/Device: //p:替换掉该行的"Device: "前缀并打印结果
内容的提问来源于stack exchange,提问作者AudibleScion
相关产品推荐
相关产品推荐

