如何用Shell脚本从ifconfig输出中提取ens3的HWaddr值
提取ens3网卡的HWaddr(MAC地址)
没问题,这是Shell脚本里很常见的需求,我给你几个实用的方法,都能结合ifconfig和grep快速拿到目标MAC地址:
方法1:用grep的Perl正则精准匹配(推荐)
直接过滤ens3网卡的输出,用grep的-oP选项提取MAC地址:
ifconfig ens3 | grep -oP 'HWaddr \K.*'
解释:
ifconfig ens3:只输出ens3网卡的信息,避免处理其他网卡的内容,更高效-o:让grep只输出匹配到的部分,而不是整行-P:启用Perl兼容正则表达式HWaddr \K.*:\K会忽略前面匹配到的HWaddr字符串,只保留后面的MAC地址部分
方法2:grep配合cut分割字段
如果你的系统不支持Perl正则(比较少见),可以用cut来分割字段:
ifconfig ens3 | grep HWaddr | cut -d' ' -f10
解释:
grep HWaddr:定位到包含HWaddr的那一行cut -d' ' -f10:以空格为分隔符(连续空格会被自动合并),提取第10个字段,也就是MAC地址
在脚本里使用示例
把提取到的MAC地址存到变量里,方便后续使用:
#!/bin/bash # 提取ens3的MAC地址 ens3_mac=$(ifconfig ens3 | grep -oP 'HWaddr \K.*') # 验证结果 if [ -n "$ens3_mac" ]; then echo "ens3网卡的HWaddr是: $ens3_mac" else echo "无法获取ens3网卡的HWaddr,请检查网卡名称或权限" fi
注意事项:
- 有些系统里
ifconfig可能在/sbin目录下,如果脚本执行时找不到命令,试试用绝对路径/sbin/ifconfig - 确保执行脚本的用户有读取网卡信息的权限(一般普通用户需要加
sudo,或者以root身份执行)
内容的提问来源于stack exchange,提问作者SyntaxSage
相关产品推荐
相关产品推荐

