【04-03】 利用sed 取出ifconfig命令中本机的IPv4地址

【04-03】 利用sed 取出ifconfig命令中本机的IPv4地址

 

#查看网卡信息
[root@CentOS ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:9F:C4:FD  
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fxxx::2xx:2xxx:xx9x:cxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:500 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:47498 (46.3 KiB)  TX bytes:18744 (18.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

#确定网卡名称及筛选IP
# -En E启用正则n不自动打印 /inet 确定需要使用的行 /s@@@gp 全局+输出 (.*inet)删除前面空格,第二个括号内全部内容,第三个括号为n后面的数据
[root@centos-7 ~]# ifconfig eth0 | sed -En '/inet /s@(.*inet )(.*)( n.*)@\2@gp'
10.0.0.100

参考:方法 
2s///p ;2s@@@p 对第二行进行过滤
-E使用正则 不使用则加反斜线转义(\)


# 第一种使用的是锁定第二行,使用IP进行定位,删除确定行前面及后面
[root@centos-7 ~]# ifconfig eth0 | sed -nr "2s/[^0-9]+([0-9.]+).*/\1/p"
10.0.0.100

[root@centos-7 ~]# ifconfig eth0 | sed -En '2s/^[^0-9]+([0-9.]{7,15}).*/\1/p'
10.0.0.100

[root@centos-7 ~]# ifconfig eth0 | sed -rn '2s/^[^0-9]+([0-9.]+) .*$/\1/p'
10.0.0.100

# 过滤第二行后删除inet前面内容;第二个sed则过滤删除包括netmask的内容
# 后面类似都是先删除前面 保留中间 删除后面的逻辑
[root@centos-7 ~]# ifconfig eth0 | sed -n '2s/^.*inet //p' | sed -n 's/netmask.*//p'
10.0.0.100

[root@centos-7 ~]# ifconfig eth0 | sed -n '2s/^.*inet //;s/ netmask.*//p'
10.0.0.100

[root@centos-7 ~]# ifconfig eth0 | sed -rn '2s/(.*inet )([0-9].*)(netmask.*)/\2/p'
10.0.0.100


观察特征,确定行数,掐头去尾,取中间

 

posted @ 2021-12-20 14:38  法月将臣  阅读(198)  评论(0)    收藏  举报