grep 提取网卡配置关键参数需精准匹配行首+等号、排除注释与空行,并结合不同发行版配置路径及运行时命令输出进行验证。

直接用 grep 提取网卡配置文件里的关键参数,核心是“精准匹配 + 排除干扰 + 显示上下文”,不是简单搜关键词就完事。
定位配置文件位置
不同发行版路径不同,常见位置有:
-
/etc/sysconfig/network-scripts/ifcfg-*(CentOS/RHEL 7 及以前) -
/etc/netplan/*.yaml(Ubuntu 18.04+,需先用cat或yq配合,grep可辅助初筛) -
/etc/network/interfaces(Debian/Ubuntu 传统方式) - 运行中信息可从
ip addr或ifconfig输出实时获取,配合管道过滤
提取 IP、子网掩码、网关等基础参数
以传统 ifcfg-ens33 为例,常用命令组合:
- 查 IPv4 地址:
grep -E "^IPADDR=|^ADDR=" ifcfg-ens33 - 查子网掩码:
grep -E "^NETMASK=|^PREFIX=" ifcfg-ens33 - 查默认网关:
grep -E "^GATEWAY=|^[[:space:]]*gateway" /etc/network/interfaces - 查 DNS:
grep -E "^DNS[0-9]+=|^nameserver" ifcfg-ens33 /etc/resolv.conf
注意:用 ^ 锁定行首,避免匹配到注释或拼写相似的变量名(如 IPADDR_SECONDARY)。
排除注释和空行,只看有效配置
配置文件里大量 # 注释和空行会干扰判断,一步清理:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
grep -v "^#" ifcfg-ens33 | grep -v "^$" | grep -E "(IPADDR|NETMASK|GATEWAY|BOOTPROTO)"- 更简洁写法:
grep -E "^(IPADDR|NETMASK|GATEWAY|BOOTPROTO)=" ifcfg-ens33(直接靠行首+等号锚定)
这样输出干净,每行都是真实生效的参数,不带任何干扰信息。
结合正则快速识别地址类字段
若要从 ip addr 输出中抓取 IPv4 地址(非配置文件),推荐:
ip addr show ens33 | grep -oE "inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}"- 去掉 CIDR 后缀只留 IP:
ip addr show ens33 | grep -oE "inet ([0-9]{1,3}\.){3}[0-9]{1,3}" | awk '{print $2}' - 排除 IPv6:
ip addr show ens33 | grep "inet " | grep -v "inet6"
这类操作适合验证实际生效配置,比读静态文件更可靠。
实际排查时,建议先确认系统使用哪套网络管理机制(NetworkManager、systemd-networkd 还是传统 ifupdown),再选对应配置源。grep 本身不解析语义,但搭配好锚点、排除和管道,就能稳稳拎出你要的关键参数。

















