免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1830 | 回复: 7

[文本处理] sed搜索所有IP [复制链接]

论坛徽章:
0
发表于 2018-06-30 16:27 |显示全部楼层
本帖最后由 liuyuhui_gdtyj 于 2018-07-01 10:05 编辑

一份文件,内容杂七杂八,包含合法与不合法的ip,一行中可能没有ip,也可能有多个ip,现在要用grep\awk\sed三种方法实现把其中合法的IP都列出来。我用grep和awk已实现,用sed实现不了,求各位高人指点~

grep -E -o "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" filename

awk '{for(i=1;i<=NF;i++){if(match($i,/((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/)>0){print substr($i,RSTART,RLENGTH)}}}' filename

sed -nr 's/.*\<(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9][0-9]|[0-9]).*$/\1.\2.\3.\4/p' filename

这个sed只会找到一行中最后一组ip,怎么找出一行中所有ip呢?

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-07-01 09:55 |显示全部楼层
本帖最后由 1cpuer 于 2018-07-01 10:10 编辑

sed -n '//p'
sed -rn '//p'
{} ->\{\} ()-> \(\)
| -> \| ----> or -o

论坛徽章:
0
发表于 2018-07-01 10:07 |显示全部楼层
回复 2# 1cpuer

不太明白,我修改了之前的内容,见新的描述。

论坛徽章:
0
发表于 2018-07-01 13:24 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2018-07-01 15:21 |显示全部楼层
回复 4# 本友会机友会摄友会

可惜我只学过linux自带的bash,连perl都没学过

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
发表于 2018-07-02 11:27 |显示全部楼层
本帖最后由 christmas1102 于 2018-07-03 11:05 编辑

审核的真莫名

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
发表于 2018-07-02 11:33 |显示全部楼层
本帖最后由 christmas1102 于 2018-07-03 10:12 编辑

回复 1# liuyuhui_gdtyj

  1. ifconfig |grep -Po '(\d+\.){3}\d+'
复制代码
  1. ifconfig |awk --re-interval '{for(i=1;i<=NF;i++){if(match($i,/(([0-9]+\.){3}[0-9]+)/,a)){print a[1]}}}'
复制代码
  1. ifconfig |sed -rn 's#([^0-9]*)(([0-9]+\.){3}[0-9]+)([^0-9]*)#\2\n#gp' | sed '/^$/d'
复制代码

是grep的活,就该给它做,干嘛要把事情复杂化

论坛徽章:
0
发表于 2018-07-03 17:52 |显示全部楼层
回复 4# 本友会机友会摄友会

大哥,你是来shell论坛砸场子的吗?我说一下我的看法,powershell确实很强大,但是学过linux shell再去看powershell,我觉得最难接受的一点就是ps的参数或者调用对象参数太长,看着好累,关于文本处理的怎么都觉得三剑客比较爽。虽说三剑客好像也支持windows吧。还有就是学习资料,视频之类的不是很多。http://www.pstips.net/why-is-powershell-powerful.html,你有推荐的吗?我的学习方式是看视频,然后再查资料...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP