文档章节

linux中匹配正确的ip地址

o
 osc_4nmshwhm
发布于 2018/08/07 10:45
字数 430
阅读 14
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

1.假设IP地址是规范的,没有出错误的

sed -n  "/[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/p" test

这种匹配存在明显的问题,在正则匹配的过程中,若是出现300,1,255,0;192.168.0.  ;192.168,1.1.1这种错误的IP地址,任然会被匹配到

 

2.IP地址规范与否未知的情况下匹配

在这里,逛论坛的时候看见一位老哥踩了一个坑,这里做 一下记录

sed -n -r   "/((([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/p" test

这个正则在匹配前24位 的时候是没有问题的,然而,在匹配最后8位的时候,会存在一个让人很无奈的问题。当你匹配192.168.1.300的时候,是可以匹配到的。为什么呢?我的正则里面可是完全没有大于 255的情况的啊。

原因如下:

在进行前24位匹配的时候使用的是 : 

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

 

 若是数字之后没有点号,那么是不会匹配成功的,但是,在匹配最后8位的时候,使用的是

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

当它匹配到30的时候,正则匹配就结束了,这就是为什么会匹配到300的原因 

 

为了解决匹配到大于255的问题,可以在上一个sed的结果之后,利用awk对IP的最后8位进行过滤

sed -n -r   "/((([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}/p" test_1 | awk -F "." '{if($4<255) print $0}'

 

 

 



o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

基于反射实现DBUtils封装(读取数据库数据生成对象或对象集合以及对数据库的CRUD)version2.0

DBUtils version2.0 附带jdbc.properties配置文件 支持操作: 1.加载驱动 2.获取数据库连接对象 3.关闭资源 4.封装通用的更新操作:INSERT UPDATE DELETE 5.封装通用查询单条数据的方法 (JDB...

osc_dh3qbz0a
38分钟前
9
0
标准驼峰命名转数据库字段

碰到一个这样的场景,数据库字段bill_no 代表单据编号,然后返回前端json 是billNo,严格按照驼峰命名法,现在前端需要自定义按照箭头进行排序,但是并不知道数据库字段,所以前端只能给你"...

osc_kvlhvh2u
39分钟前
0
0
突然的立秋

前几天在某app上面耍到说“8月7号就立秋了,等我们再见面就该穿长袖了,不,我们应该不会再见到了”。 就很突然了,今天立秋了。 秋天到了,和夏天的人和事好好道个别吧。 还记得以前,每年的...

osc_z3ivsxnp
41分钟前
12
0
第一届华数杯A题思路分析

** 华数杯a题浅见 需要本文的话请加2574364134 ** 当我刚拿到这个题目的时候,惊呆了,这个不就是2018年国赛的A题吗?2018年的国赛A题是为了进行高温防护,这道题现在就是低温防护服御寒,所...

osc_zken4nb1
42分钟前
0
0
想象自己在前方等自己-纯内心戏

以下为一年级某个时刻的痛苦挣扎,就是个经历而已,记录经历。 论文的初初稿终于在昨天发给了老师。客观的讲我写的真的很差,很多时候感觉自己写不下去了,很多放弃的念头不是一闪而过,而是...

osc_b67rw1ne
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部