1. 程式人生 > >shell 正則匹配ip地址

shell 正則匹配ip地址

一般ip分成5類:

  1. A類地址 
    ⑴ 第1位元組為網路地址,其它3個位元組為主機地址。 
    ⑵ 範圍:1.0.0.1—126.155.255.254 
    ⑶ 私有地址和保留地址: 
    10.X.X.X是私有地址(所謂的私有地址就是在網際網路上不使用,而被用在區域網絡中的地址)。 
    127.X.X.X是保留地址,用做迴圈測試用的。

  2. B類地址 
    ⑴ 第1位元組和第2位元組為網路地址,其它2個位元組為主機地址。 
    ⑵ 範圍:128.0.0.1—191.255.255.254 
    ⑶ 私有地址和保留地址 
    172.16.0.0—172.31.255.255

    是私有地址 
    169.254.X.X是保留地址。如果你的IP地址是自動獲取IP地址,在網路上又沒有找到可用的DHCP伺服器。就會得到其中一個IP。

  3. C類地址 
    ⑴ 第1位元組、第2位元組和第3個位元組為網路地址,第4個個位元組為主機地址。另外第1個位元組的前三位固定為110。 
    ⑵ 範圍:192.0.0.1—223.255.255.254
    ⑶ 私有地址: 
    192.168.X.X是私有地址。

  4. D類地址 
    ⑴ 不分網路地址和主機地址,它的第1個位元組的前四位固定為1110。 
    ⑵ 範圍:224.0.0.1—239.255.255.254

  5. E類地址 
    ⑴ 不分網路地址和主機地址,它的第1個位元組的前五位固定為11110。 
    ⑵ 範圍:240.0.0.1—255.255.255.254

       

      那麼我們匹配ip,要從0-255匹配,由於第一位不能為0,最後一位不能為255,即正則匹配表示式為

(^([1-9]|1[0-9]|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]{1,2}|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]{1,2}|1[1-9]{2}|2[0-5][0-9]|25[0-4])$

 

    

[[email protected] ~]# cat ip.txt
112.456.44.55
192.168.12.43
256.18.56.1
25.34.345.7
25.34.83.645
10.0.0.1

[
[email protected]
~]# egrep '(^([1-9]|1[0-9]|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]{1,2}|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]{1,2}|1[1-9]{2}|2[0-5][0-9]|25[0-4])$' ip.txt
192.168.12.43 10.0.0.1