使用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地址。