免费注册 查看新帖 |

Chinaunix

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

一个循环匹配的问题 [复制链接]

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-30 01:06 |只看该作者 |倒序浏览
有一个A文本
  1. www.a1.com a1.com /home/a1.com
  2. www.a2.com a2.com /home/a2.com
  3. www.a3.com a3.com /home/a3.com
  4. www.a4.com a4.com /home/a4.com
  5. ..
复制代码
B文本
  1. a2.com
  2. a3.com
复制代码
读取A文本,当匹配到B文本中的域名时候打印出整行记录
结果是
www.a2.com a2.com /home/a2.com
www.a3.com a3.com /home/a3.com
这两行。
  麻烦大家提供下思路,我用while读取了A文本,然后在里面嵌套一个读取B文本来匹配,但就是只能匹配一行

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2011-03-30 02:37 |只看该作者
回复 1# mcshell
  1. perl -ane '{$a{$F[0]}=1}if ($a{$F[1]}) {print }' B A
  2. www.a2.com a2.com /home/a2.com
  3. www.a3.com a3.com /home/a3.com
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2011-03-30 08:45 |只看该作者
ls的awk风格十足....

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-03-30 08:49 |只看该作者
回复 3# jason680


    哈哈,被看穿了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2011-03-30 09:27 |只看该作者
  1. perl -e 'print `grep -f t002 t003`'
  2. www.a2.com a2.com /home/a2.com
  3. www.a3.com a3.com /home/a3.com
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-03-30 10:20 |只看该作者
就两个循环的嵌套啊。。。

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
7 [报告]
发表于 2011-03-30 13:29 |只看该作者
有没有不是但命令行的处理方式吗?
   对了文本有很多行 不止2行的

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


    谢谢了 可以解释下吗?  这个语法有点让人看不懂

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2011-03-30 14:08 |只看该作者
回复 8# mcshell
  1. perl -ane '{
  2. $a{$F[0]}=1  # $F[0]:数据的第一列,数组a=1
  3. }
  4. if ($a{$F[1]})  # 如果$F[1]:数据的第二列存在于数组中的话,
  5. {
  6. print  # 打印
  7. }' B A

复制代码

论坛徽章:
0
10 [报告]
发表于 2011-03-30 15:24 |只看该作者
最苯的,刚开始学习perl;
运行这个文件,将a.txt, b.txt保存在d:/下面。
open FILEB, "d:/b.txt";
foreach $lineb (<FILEB>) {
         chomp;
         $lineb =~ s/^\s+$//g;
         if ($lineb) {
              print "lineb in file b is: $lineb \n";
              open FILEA, "d:/a.txt";
              while (<FILEA>) {
                     print "matching, " . $_ if /$lineb/;
             }
             close FILEA;
         }
}
close FILEB;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP