awk取出网络接口和mac地址

发布时间 2023-06-12 10:56:15作者: 安生丶
显示 CentOS 7 上本机的网络接口及其 MAC 地址信息:

ip a s:ip 命令用于显示和操作 Linux 系统中的网络设备、地址和路由等信息。在这里,a 是 address 的缩写,s 是 show 的缩写。因此,ip a s 命令的作用是显示本机的网络地址信息。

|:管道操作符用于将一个命令的输出作为另一个命令的输入。在这个例子中,ip a s 的输出将作为 awk 命令的输入。

awk '...':awk 是一个文本处理工具,用于对文本进行模式扫描和处理。在这个命令中,awk 被用来处理 ip a s 的输出,并根据指定的规则提取 MAC 地址信息。

BEGIN{print "本机 MAC 地址信息如下:"}:BEGIN 是 awk 的一个特殊模式,用于在处理输入之前执行一次。在这里,它用于输出标题 "本机 MAC 地址信息如下:"。

/^[0-9]/{print $2;getline;if($0~/link\/ether/){print $2}}:这是一个 awk 规则,用于处理输入行。/^[0-9]/ 是一个正则表达式,匹配以数字开头的行。当遇到这样的行时,执行 {print $2;getline;if($0~/link\/ether/){print $2}}。这个代码块做了以下操作:

print $2:输出当前行的第二个字段(即网络接口名称)。
getline:读取下一行。
if($0~/link\/ether/){print $2}:检查新读取的行是否包含 "link/ether"。如果包含,则输出该行的第二个字段(即 MAC 地址)。
| grep -v lo::再次使用管道操作符将 awk 命令的输出传递给 grep。grep -v lo: 表示过滤掉包含 "lo:" 的行,从而排除本地回环接口(lo)。

综上所述,这个命令的作用是从本机的网络地址信息中提取网络接口及其对应的 MAC 地址(排除本地回环接口),并以可读的格式输出。

ip a s | awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{print $2;getline;if($0~/link\/ether/){print $2}}' |grep -v lo:


awk '$7 !~ /y/{print}' 文件名
这个命令首先会读取指定的文件名 文件名中的内容。然后对于文件中的每一行,它会判断第七列是否包含字母 "y" 。如果不包含,则打印该行。

其中 $7 表示第七列, !~ 表示不匹配正则表达式 /y/ (即第七列不包含字母 "y"),{print} 表示输出该行。