使用三剑客(grep,sed,awk)获取IP地址

例一:将系统用ifconfig命令列出的信息中ens33的IP地址打印出来

使用三剑客(grep,sed,awk)获取IP地址插图

自用方法1(简单实用):

ifconfig ens33 | grep 'inet' | awk -F " " '{print $2}' | sed -n '1p'

  • ifconfig ens33 获取网卡信息
  • grep 'inet' 过滤inet的行
  • awk -F " " '{print $2}' 以空格为分隔符,获取第二列
  • sed -n '1p' 打印第一列

方法2:

[root@Centos /]# ifconfig eth0 |grep "inet addr"

inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

首先将带有IP地址行过滤打印出来,然后再进行过滤取出IP地址

[root@Centos /]# ifconfig eth0 |grep "inet addr"|awk -F '[ :]+' '{print $4}'

192.168.1.2

以空格和:做为分隔符,+代表前面多个重复的分隔符识为一个,将第四列打印

方法3:

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7005 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3095 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:709421 (692.7 KiB)  TX bytes:454116 (443.4 KiB)

[root@Centos /]# ifconfig eth0|awk -F '[ :]+' NR2 取整个内容第二行

      inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

[root@Centos /]# ifconfig eth0|awk -F '[ :]+' 'NR2 {print $4}' 打印第四列

192.168.1.2

方法4:

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7271 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:733402 (716.2 KiB)  TX bytes:473258 (462.1 KiB)

[root@Centos /]# ifconfig eth0|sed -n 2p 将第二行打印

      inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

[root@Centos /]# ifconfig eth0|sed -n 2p|sed 's#^.*addr:# #g'

192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0

将以空格.*(前任意字符)addr:开头的内容替换成空输出

[root@Centos /]# ifconfig eth0|sed -n 2p|sed 's#^.addr:# #g'|sed 's# Bcast.$# #g' 将以两空格Bcast.*(后任意字符)结尾的内容替换成空输出

192.168.1.2

方法5

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link
          UP BROACAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7723 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3434 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:776543 (758.3 KiB)  TX bytes:493886 (482.3 KiB)

[root@Centos /]# ifconfig eth0|sed -n 's#^.addr:(.) Bcast.*$#\1#gp'

192.168.1.2

将需要的内容匹配到()中,然后将()中的内容打印出来

例二 过滤ip a 打印出的IP中ens33的地址

使用三剑客(grep,sed,awk)获取IP地址插图1

自用方法:
ip address | grep ens33 | sed -n '2p' | awk -F " " '{print $2}' | awk -F "/" '{print $1}'

  • grep ens33 过滤ens33这行
  • sed -n '2p' 获取第二行
  • awk -F " " '{print $2}' 以空格符为分割打印第二列,此过滤后会显示IP/掩码,所以仍需过滤
  • awk -F "/" '{print $1}'` 以/为分割胡打印第一列IP即可
阅读剩余
THE END
诺言博客