linux中匹配正确的ip地址
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位匹配的时候使用的是 :
(([-]{,})|([-]{})|([-][-])|([-]))\.
若是数字之后没有点号,那么是不会匹配成功的,但是,在匹配最后8位的时候,使用的是
(([-]{,})|([-]{})|([-][-])|([-]))
当它匹配到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}'
linux中匹配正确的ip地址的更多相关文章
- 如何在 Linux 中找到你的 公网IP 地址
每个网站都有一个独有的公开 IP 地址,可供任何人从任何地方访问. 互联网协议Internet Protocol(IP)不需要介绍 —— 我们每天都在使用它.即使你不直接使用它,当你在浏览器上输入 w ...
- Linux socket编程 DNS查询IP地址
本来是一次计算机网络的实验,但是还没有完全写好,DNS的响应请求报文的冗余信息太多了,不只有IP地址.所以这次的实验主要就是解析DNS报文.同时也需要正确的填充请求报文.如果代码有什么bug,欢迎指正 ...
- 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口
注意,如果想用xshell去连接本地虚拟机中的linux系统,需要本地虚拟机中的系统是启动的才能连接!!!!! ============================================ ...
- 如何在 Linux 下大量屏蔽恶意 IP 地址
很多情况下,你可能需要在Linux下屏蔽IP地址.比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰.或者当你在运行P2P软件时.你可能想要过滤反P2P活动的网络链接.如果你是一名系统管 ...
- Linux系统下如何设置IP地址?
Linux系统下如何设置IP地址?我们可以通过命令设定IP的方法,不过此方法的前提条件是用户需root权限.在linux系统的 /etc/sysconfig/network-script/ifcfg- ...
- LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址
在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取 ...
- Linux环境下如何配置IP地址、MAC地址
Linux环境下如何配置IP地址.MAC地址 1.配置IP地址 进入配置IP地址路径,进行修改即可 cd /etc/network vim interface 加入以下内容: iface eth0 i ...
- Linux下编程获取本地IP地址的常见方法
转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之 ...
- asp.net中获得客户端的IP地址
asp.net中获得客户端的IP地址 因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅. 通常我们都通过下面的代码获得IP ...
随机推荐
- 验证码帮助类【CaptchaHelper 】
GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用Direct ...
- HDU 1686 Oulipo (可重叠匹配 KMP)
Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- ucosii任务堆栈的作用是什么呢?
http://blog.csdn.net/supreme42/article/details/7397241 第一,当任务运行时,它用来保存一些局部变量:第二,当任务挂起时,它负责保存任务的运行现场, ...
- python2.7下使用logging模块记录日志到终端显示乱码问题解决
刚才翻了翻2年以前用python2.7写的一个爬虫程序,主要功能就是把各地市知识产权局/专利局网站的专利相关项目.课题通知,定期爬取和分析,辅助企业进行项目申请. 这里要谈的不是爬虫功能的实现,而是今 ...
- 一个loser的忏悔
一直认为自己是世界的主角,从小意气用事,耽误了学业,现在才发现了自己的爱好,于是开始努力进阶. 愿不辜负自己的努力! 高中大学青葱旺盛的美好时期全部用在了感叹人生上,只能在30岁的年纪重新扛起学业,活 ...
- Lucene补充
1. 课程计划 Lucene的Field Lucene的索引库维护 lucene的查询 a) Query子对象 b) QueryParser 4.Lucene相关度排序(了解) 2. Field域 2 ...
- leyer不写content参数直接传递给子页面数据
function btnAddClickownfund(){ //获取数据 var actual = $("#actual_capitals").html().trim(); // ...
- JSON在Java中的使用(一)
1.去JSON官网下载org.json包 https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22 ...
- makefile中的一些参数说明
#obj = main.o sub.o add.o div.o mul.osrc = $(wildcard *.c) #搜索.c文件 可以加路径 obj = $(patsubst %.c, %.o, ...
- zookeeper无法启动"Unable to load database on disk
QuorumPeerMain,ResourceManager都没有起来 resourcemanager.log如下 2018-09-28 23:17:02,787 FATAL org.apache.h ...