linux過濾ip地址


一、系統版本

[root@zabbix-server tmp]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

二、用awk過濾取出ip地址

[root@zabbix-server ~]# ifconfig enp2s0f0|awk NR==2
        inet 10.0.100.208  netmask 255.255.255.0  broadcast 10.0.100.255

[root@zabbix-server tmp]# ifconfig enp2s0f0|awk -F '[ :]+' 'NR==2 {print $3}'
10.0.100.208

三、用awk過濾取出ip地址 (Centos6.6版本)

方法一:

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'
10.0.0.162

方法二:通過awk同時使用多個分隔符來實現

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}'
192.168.1.186

方法三:通過awk同時使用多個分隔符,然后通過正則匹配多個分隔符的方法來實現

[root@oldboy ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
10.0.0.185

我們來說明下這個簡單易用的好辦法:

提示:本題NR是行號,分隔符+號匹配,[]里一個或多個任意一個分隔符,這里就是匹配一個或多個冒號或空格。

1)awk -F 后面跟分隔符‘[空格:]+’,其中[空格:]多分隔符寫法,意思是以空格或冒號做分隔,后面的"+"號是正則表達式,意思是匹配前面空格或冒號,兩者之一的1個或1個以上。

2)NR==2和sed -n "2p",相當,意思都是選擇第幾行,例:

[root@oldboy ~]# ifconfig eth0|awk NR==2

inet addr:10.0.0.185  Bcast:10.0.0.255  Mask:255.255.255.0

3)指定awk -F '[ :]+'分隔符后,不同字符串被分隔的列依次為:

 

         

 

inet

 

addr

 

10.0.0.185

 

  Bcast:10.0.0.255  Mask:255.255.255.0

 

第一列

 

第二列

 

第三列

 

第四列

 

  后面忽略不計。

 

 

4)整個答案awk部分意思是,通過NR==2取出第二行,然后,通過-F '[-:]+多分隔符正則匹配,然后通過{print $4}打印出第四列 !

5)掌握了理論要去實踐驗證才是科學嚴謹的學習態度。

[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'     

1

[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'     

2

[root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'    

2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM