免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4419 | 回复: 4
打印 上一主题 下一主题

发到perl版来求助 文本中的IP地址插入类别信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-04 19:04 |只看该作者 |倒序浏览

求教:
一个文本充斥着大量IP地址(IP地址的位置也不固定),相把IP地址的相关分类  插到IP地址的后面

如a b c 8.8.8.8  2.2.2.2  d
更改为  a b c 8.8.8.8 谷歌  2.2.2.2 未知  d

分类的依据为配置文件
set
谷歌
8.8.8.0-8.8.8.255
(可能有多行)
有多个分类名称
如果不能匹配,则标记未知

请教如何实现

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2013-09-04 21:14 |只看该作者
回复 1# sullybear


    多发些文本来测试下,你的意思的属于这个自网的,然后查询后面的所属地,在输出 是这个意思吧。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
3 [报告]
发表于 2013-09-04 21:24 |只看该作者
这个问题要分成三部分来处理:

1. 将 IP 地址分离出来
2. 按照 IP 地址分类建立 IP地址 =》类别 查询散列
3. 按照查询散列,将原文中的 IP 地址替换掉

1. 分离 IP 地址,用 Regexp::Common 模块中的 IP 地址正则表达式。

2. 根据不同类别建立 正则表达式散列。例如:'8\.8\.8.[0-9]+' => 'google',

3. 按照生成的查询散列对原文进行替换:

{
    '8.8.8.8' => 'google',
    ....
}

论坛徽章:
0
4 [报告]
发表于 2013-09-04 22:04 |只看该作者
回复 2# mcshell


    被测文本:
a  b  c  1  2   8.8.8.8  c 56
1.2.3.4 3 5 t  114.114.114.114


配置文件
美国
1.0.0.0-1.255.255.255  
2.0.0.0-7.255.255.255

谷歌
8.0.0.0-8.255.255.255
9.0.0.0-9.255.255.255

江苏
114.114.0.0-114.114.114.114

类似这种,希望输出

a  b  c  1  2   8.8.8.8  谷歌  c 56
1.2.3.4 美国 3 5 t  114.114.114.114  江苏

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
5 [报告]
发表于 2013-09-05 08:51 |只看该作者
没有网络号,或者子网掩码,无法判断是那个段的吧。
这样写出来,只能枚举出所有IP地址,然后判断是否包含
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP