免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: billyzhou033
打印 上一主题 下一主题

[文本处理] 文本查找匹配输出结果。。求解 [复制链接]

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
21 [报告]
发表于 2014-07-10 19:48 |只看该作者
回复 18# billyzhou033
  1. awk 'NR==FNR{l=split($NF,a,";");NF--;for(i=1;i<=l;i++)b[a[i]]=length(b[a[i]])?b[a[i]]"\n"$0:$0;next}{print ($1 in b)?b[$1]:"no"}' allip ip.txt
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
22 [报告]
发表于 2014-07-10 19:54 |只看该作者
回复 18# billyzhou033


原文本没有 ------- 这些,硬是被你搞出这些,别人的回复只针对你给出的文本进行考虑的! 给出的文本与原始文本不符,到时候代码用不了你又得来问.这不是多此一举吗?



好好看看怎么提问吧

http://bbs.chinaunix.net/thread-4118053-1-1.html
http://bbs.chinaunix.net/thread-4069196-1-1.html
http://bbs.chinaunix.net/thread-923274-1-1.html

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
23 [报告]
发表于 2014-07-10 19:55 |只看该作者
运气不错,飘了一个世界杯徽章,特此留念。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
24 [报告]
发表于 2014-07-10 19:57 |只看该作者
回复 23# Herowinter


    我也飘到了啊. 而且都飘了好几个积分红包.

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
25 [报告]
发表于 2014-07-10 19:58 |只看该作者
回复 24# reyleon
不错不错,决赛的赌本有了。

   

论坛徽章:
0
26 [报告]
发表于 2014-07-10 21:03 |只看该作者
回复 22# reyleon

sorry,可能我表达不是很清楚,让你在帮我解决问题的时候带来了麻烦,深表歉意。

运行了你给的代码,发现有点问题。awk 'NR==FNR{l=split($NF,a,";";NF--;for(i=1;i<=l;i++)b[a]=length(b[a])?b[a]"\n"$00;next}{print ($1 in b)?b[$1]:"no"}' allip.txt ip.txt
ip.txt里只有一个ip,输出结果也应该是一个,ip.txt中有多少ip,则输出多少行。allip.txt中会有重复的IP,查找一次输出就行了,不用每个都查找输出。
感谢您的帮助,我现在是零时抱佛脚,没办法。。


allip.txt内容:
        www.10000188.com                121.199.33.37;
        www.10000188.cn.www.10000188.com.cn             121.199.33.37;
湘ICP备06011223号       www.qhsyedu.com         220.170.157.9;
湘ICP备05002384号       www.kingdom.cn.www.kingdom.com.cn               220.168.83.206;
湘ICP备05007914号       www.china0737.com               222.241.95.108;42.120.0.131;
        www.10000188.com                121.199.33.37;
        www.10000188.cn.www.10000188.com.cn             121.199.33.37;
湘ICP备06011223号       www.qhsyedu.com         220.170.157.9;
湘ICP备05002384号       www.kingdom.cn.www.kingdom.com.cn               220.168.83.206;
湘ICP备05007914号       www.china0737.com               222.241.95.108;42.120.0.131;

ip.txt内容:
220.170.157.9

运行结果:
[root@RHEL6 n2]# ./ipd.sh
湘ICP备06011223号 www.qhsyedu.com
湘ICP备06011223号 www.qhsyedu.com

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
27 [报告]
发表于 2014-07-10 21:43 |只看该作者
回复 26# billyzhou033
看样子我20楼的也不行吗?

   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
28 [报告]
发表于 2014-07-10 21:44 |只看该作者
回复 26# billyzhou033


    我就是考虑到你的allip.txt文件里可能有重复的IP,又担心这个IP对于的域名是不同的,才这样的...既然你只要一个,那稍微改下就好了
  1. awk 'NR==FNR{l=split($NF,a,";");NF--;for(i=1;i<=l;i++)b[a[i]]=$0;next}{print ($1 in b)?b[$1]:"no"}' allip ip.txt   
复制代码

论坛徽章:
0
29 [报告]
发表于 2014-07-10 22:02 |只看该作者
回复 27# Herowinter
20楼的好像可以,前面我自作主张,加了----这些符号。。东西被我改来改去的。。麻烦你们了。。感谢帮助。。


   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
30 [报告]
发表于 2014-07-10 22:08 |只看该作者
回复 29# billyzhou033

那个也会输出多个的呀,如果重复的只输出第一个应该这样
  1. awk 'NR==FNR{a[$0];next} {sub(/;.*/,"",$NF);if(($NF in a)&&!b[$NF]++){NF--;print}else print "no"}' ip.txt allip.txt > jg.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP