千家信息网

awk命令过滤ifconfig命令中的IPv4地址

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,前言:本文主要讲解如何过滤ifconfig命令结果中的IPv4地址。本文章的案例适合查找出所有网卡的IPv4地址。本章所有案例的系统是Red Hat 7.6版本。[root@192 opt]# cat
千家信息网最后更新 2026年10月31日awk命令过滤ifconfig命令中的IPv4地址

前言:

本文主要讲解如何过滤ifconfig命令结果中的IPv4地址。

本文章的案例适合查找出所有网卡的IPv4地址。

本章所有案例的系统是Red Hat 7.6版本。

[root@192 opt]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.6 (Maipo)

方法一:

使用awk命令、正则表达式、通配符来筛选IPv4地址。

[root@localhost ~]# ifconfigens33: flags=4163  mtu 1500        inet 192.168.109.128  netmask 255.255.255.0  broadcast 192.168.109.255        inet6 fe80::20c:29ff:fed8:33c3  prefixlen 64  scopeid 0x20        ether 00:0c:29:d8:33:c3  txqueuelen 1000  (Ethernet)        RX packets 22836  bytes 1608781 (1.5 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 6159  bytes 617125 (602.6 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost ~]# ifconfig|awk '/inet / && $2 !~ /^127/{print $2}'192.168.109.128

注释:awk命令用正则来过滤出有IP地址的行并且用通配符来排除以127开头(回环地址)的地址,最后打印出第二列的有效IP地址。

方法二:

结合使用awk命令和grep命令来过滤IPv4地址。

[root@localhost ~]# ifconfigens33: flags=4163  mtu 1500        inet 192.168.109.128  netmask 255.255.255.0  broadcast 192.168.109.255        inet6 fe80::20c:29ff:fed8:33c3  prefixlen 64  scopeid 0x20        ether 00:0c:29:d8:33:c3  txqueuelen 1000  (Ethernet)        RX packets 24068  bytes 1711773 (1.6 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 6769  bytes 690417 (674.2 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost ~]# ifconfig|awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/);print substr($0,RSTART,RLENGTH)}'|grep -Ev "^127|^$"192.168.109.128

注释:先使用awk中match命令结合正则查找出IP地址格式的字符串所在行的位置和长度,再用substr命令来截取IP地址,最后使用grep命令排除以127开头(回环地址)和空行并打印出其它所有的IP地址。

方法三:

使用awk命令中RS变量的特殊值和正则匹配来筛选出IPv4地址。

[root@localhost ~]# ifconfigens33: flags=4163  mtu 1500        inet 192.168.109.128  netmask 255.255.255.0  broadcast 192.168.109.255        inet6 fe80::20c:29ff:fed8:33c3  prefixlen 64  scopeid 0x20        ether 00:0c:29:d8:33:c3  txqueuelen 1000  (Ethernet)        RX packets 24536  bytes 1748017 (1.6 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 6958  bytes 712613 (695.9 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost ~]# ifconfig|awk 'BEGIN{RS=""}!/^lo/{print $6}'192.168.109.128

注释:先使用BEGIN来定义RS变量的值为段落分隔(BEGIN{RS=""}),然后用正则匹配来排除以lo开头的段落,最后找出IP地址所在列的位置并打印出来。本方法要确保IP地址要在段落的第六列,当然也可以根据自己的特殊情况来进行调整。

RS变量:通俗讲就是换行分隔符变量,默认值为"\n"换行符,而awk命令一次性读取多少数据都是由RS变量来决定的。例如:RS=" "(空格),awk一次性读取的数据为一个字符串 不再是一行的数据了。

RS=""(中间没有空格):此为RS变量的特殊值(段落分隔),以空行或多个连续空行为分隔,一次性读取一段数据。

方法四:

使用awk命令中的RS和FS变量来筛选出ipv4地址(本方法比较复杂,主要讲的是awk的使用)

[root@localhost ~]# ifconfigens33: flags=4163  mtu 1500        inet 192.168.109.128  netmask 255.255.255.0  broadcast 192.168.109.255        inet6 fe80::20c:29ff:fed8:33c3  prefixlen 64  scopeid 0x20        ether 00:0c:29:d8:33:c3  txqueuelen 1000  (Ethernet)        RX packets 25278  bytes 1804185 (1.7 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 7240  bytes 745239 (727.7 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost ~]# ifconfig|awk 'BEGIN{RS="";FS="\n"}!/^lo/{$0=$2;FS=" ";$0=$0;print $2}'192.168.109.128

注释:先使用BEGIN定义awk以段落来读取数据,列以换行符来分隔(BEGIN{RS="";FS="\n"})。再使用正则匹配排除以lo开头的段落。重新设置$0的值为$2(含有IP地址的那一行内容,此时列的分隔符为换行符),设置FS变量的值为空格(FS=" ",列分隔符为空格),再重新设置$0的值但保持内容不变($0=$0,重置FS的值),最后打印出IP地址。

FS变量:列的分隔符变量。$0=$2或$2=xxx或$6=$8等等只要重置了$0或列的内容都会重置一次FS变量的值。

方法五:

结合使用awk和sed命令来过滤IPv4地址。

[root@localhost ~]# ifconfigens33: flags=4163  mtu 1500        inet 192.168.109.128  netmask 255.255.255.0  broadcast 192.168.109.255        inet6 fe80::20c:29ff:fed8:33c3  prefixlen 64  scopeid 0x20        ether 00:0c:29:d8:33:c3  txqueuelen 1000  (Ethernet)        RX packets 26232  bytes 1879377 (1.7 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 7636  bytes 791883 (773.3 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost ~]# ifconfig|sed -n '/inet /p'|awk '$2 !~ /^127/{print $2}'192.168.109.128

注释:先用sed命令过滤出包含IP地址的行,再使用awk命令排除含有以127开头(回环地址)IP地址的行,最后打印其他行的有效的IP地址。

总结:

本文章主要使用awk命令来筛选IPv4地址。

涉及到awk命令的功能主要如下所示:

RS变量:行分隔符变量,就是一次性读取的数据由此变量来决定。

FS变量:列分隔符变量,每一列的内容由此变量来进行分隔。

match命令:查找所匹配格式的字符串在每行中的位置,以及所匹配到的字符串的长度。

substr命令:根据条件来截取数据。命令格式:substr("原始数据","开始位置","结束位置"),位置主要以数字来定义。没有结束位置则截取到原始数据的末尾。


地址 命令 变量 数据 位置 分隔符 正则 段落 开头 方法 注释 一次性 内容 字符 字符串 空格 特殊 回环 换行符 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 今日互联网科技 厦门中拓互联网络科技有限公司 互联网和科技创新 港股互联网科技股 互联网科技视频 互联网科技汛 互联网科技宣传片 衡水科技产业互联网平台 安控科技rtu产品工业互联网 青岛中康互联网医疗科技有限公司 本届互联网博览会上的黑科技 明优互联网科技有限公司 工业互联网展湾科技股份有限公司 互联网金融科技公司的优势 智帮互联网科技公司最近动向 卡尔迅互联网科技有限公司 福州德业互联网科技 互联网金融运营模式中的金融科技 互联网的黑科技实验室 互联网科技工作委员会副主任毛军 科技服务与互联网 深圳齐家互联网科技 亿人帮互联网科技 互联网养老 桔豆科技 广州百诚互联网科技有限公司官网 河南商务圈互联网科技有限公司 宁波允成互联网科技有限公司 互联网科技自媒体灵感 前海云享互联网科技
0