如何格式化ifconfig输出 仅保留每个网络接口的名称和MTU值
解决方案
你之前的命令存在的问题是没有过滤掉每个接口下带缩进的附属信息行,导致输出了大量无效内容。
可用命令
直接执行下面的awk过滤命令即可实现需求:
ifconfig | awk '/^[^[:space:]]/ && /mtu/ {print $1 " " $3 " " $4}'
命令逻辑说明
/^[^[:space:]]/:只匹配行首没有空白字符的行,也就是每个网络接口的第一行描述行,自动过滤带缩进的inet6、收发统计等附属行&& /mtu/:额外匹配包含mtu关键字的行,避免输出没有mtu配置的特殊虚拟接口- 后续打印逻辑和你原有写法一致,输出接口名、mtu关键字和对应的数值
如果你的系统ifconfig输出中mtu不在第3、4字段的位置,可以用更通用的匹配写法:
ifconfig | awk '/^[^[:space:]]/ {inf=$1} /mtu/ {print inf, "mtu", $NF; inf=""}'
输出效果
对你提供的ifconfig输入,上述命令会直接输出符合要求的结果:
cali0a56gaa5a33: mtu 8122 cali4edac9c332d: mtu 8122
内容的提问来源于stack exchange,提问作者AbreQueVoy
相关产品推荐
相关产品推荐

