本篇文章给大家分享的是有关怎么在shell中通过正则匹配ip地址,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> ip分成五大类:强>
<强>一个类地址
强>
,,,⑴第1字节为网络地址,其它3个字节为主机地址。
,,,⑵范围:1.0.0.1-126.155.255.254
,,,⑶私有地址和保留地址:
,,,,,,,①10. x.x。X是私有地址(只能在局域网络使用的地址)。
,,,,,,,②127. x.x。X是保留地址,循环测试。
<强> B类地址强>
,,,⑴前2个字节为网络地址,其它2个字节为主机地址。
,,,⑵范围:128.0.0.1-191.255.255.254
,,,⑶私有地址和保留地址
,,,,,,,①172.16.0.0-172.31.255.255是私有地址
,,,,,,,②169.254.X。X是保留地址;如果获取地址是DHCP方式,又没有找到可用的DHCP服务器,就会获取其中一个地址。
<强> C类地址强>
,,,⑴前3个字节为网络地址,最后一个字节为主机地址;第1个字节的前三位固定为110。
,,,⑵范围:192.0.0.1-223.255.255.254
,,,⑶私有地址:
,,,,,,,192.168.X。X是私有地址。
<强> D类地址强>
,,,⑴不区分网络地址和主机地址,第1个字节的前四位固定为1110。
,,,⑵范围:224.0.0.1-239.255.255.254
E类地址
,,,⑴不区分网络地址和主机地址,第1个字节的前五位固定为11110。
,,,⑵范围:240.0.0.1-255.255.255.254
那么我们匹配的ip,要从0 - 255匹配,由于第一位不能为0,最后一位不能为255,即正则匹配表达式为
(^ ([1 - 9] [0 - 9] | 1 | 1 [1 - 9] {2} [0 - 9] [0 - 4] | 2 | 25 (0 - 5)) \。) (([0 - 9] {1,2} | 1 [1 - 9] {2} [0 - 4] [0 - 9] | | 2 25 (0 - 5)) \) {2} ([0 - 9] {1,2} | 1 [1 - 9] {2} [0 - 5] [0 - 9] | | 2 25 (0 - 4)) $
[root@shell ~] #, 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 , (root@shell ~) #, egrep & # 39; (^ ([1 - 9] [0 - 9] | 1 | 1 [1 - 9] {2} [0 - 4] [0 - 9] | | 2 25 (0 - 5)) \。) (([0 - 9] {1,2} | 1 [1 - 9] {2} [0 - 4] [0 - 9] | | 2 25 (0 - 5)) \) {2} ([0 - 9] {1,2} | 1 [1 - 9] {2} [0 - 5] [0 - 9] | | 2 25 (0 - 4)) $ & # 39; ip.txt 192.168.12.43 10.0.0.1