使用Awk作为ifconfig的过滤器,可以让我们更方便地查找网络接口的信息。下面给出一个示例脚本,可以将ifconfig的输出结果以表格的形式展示出来:
ifconfig | awk '/^[a-z]/ { iface=$1; getline; gsub(/:/,""); ip=$2; \
getline; if($1 == "inet") { print iface"\t"ip"\t"$2 } else \
{ print iface"\t"ip"\t-" } }'
以上的代码解释:
ifconfig 输出所有网络接口的信息awk 接受ifconfig的输出结果,并使用正则表达式匹配以小写字母开头的行。这些行包含网络接口的名称。 iface=$1 变量保存网络接口名称。getline 函数会从输入中读取下一行,并赋值给 $0。gsub 函数用于替换字符串。此处替换冒号为空字符串。$2 变量保存IP地址。getline。现在 $0 存储了本地网络接口的详细信息。inet 开头,则提取IPv4地址并打印。否则打印一个破折号。这个脚本将输出一个表格,包含每个网络接口的名称、IP地址和MAC地址。