免费注册 查看新帖 |

Chinaunix

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

求一perl程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-15 16:25 |只看该作者 |倒序浏览
有一文件,共A,B,C,D,E,F六列,列之间table隔开,如果E与F列上的值相同就输出A,B,C,D,E列相应的数据,perl如何做呢?
例如:
A                       B                          C                           D                                  E                                   F
1                       20                        30                         50                            APPLE                            EYE
3                       70                        90                         50                            BOOK                            APPLE         
7                       45.2                     70.5                      50.7                         EYE                                GOD      

输出结果应为:
A                       B                          C                           D                                  E   
1                       20                        30                         50                            APPLE
7                       45.2                     70.5                      50.7                         EYE


附件是真实数据。

upload.zip

18.72 KB, 下载次数: 23

论坛徽章:
0
2 [报告]
发表于 2011-10-15 17:07 |只看该作者
本帖最后由 ustbleetom 于 2011-10-15 20:35 编辑
  1. #!/usr/bin/perl

  2. open FH, "<", "upload.txt";

  3. while(<FH>){
  4.         @fields = split /\t/;
  5.         chomp $fields[5];
  6.         if($fields[4] eq $fields[5]){
  7.                 pop @fields;
  8.                 print "@fields";
  9.                 print "\n";
  10.         }
  11. }
复制代码
我去,原来不是这个意思。lz语文没学好。

论坛徽章:
0
3 [报告]
发表于 2011-10-15 18:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
4 [报告]
发表于 2011-10-16 06:48 |只看该作者
本帖最后由 rubyish 于 2011-10-16 07:10 编辑
  1. my ( @a, %h );

  2. while (<>) {
  3.     chomp;
  4.     my @b = split /\t/;
  5.     push @a, [ @b[ 0 .. 4 ] ];
  6.     $h{ $b[5] } = 1 if $b[5];
  7. }

  8. for (@a) {
  9.     print join "\t", @$_, "\n" if exists $h{ @$_[4] };
  10. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-10-16 10:02 |只看该作者
谢谢各位!ustbleetom 运行结果只一个数据,芙蓉女侠的无数据输出,rubyish 的程序可运行,结果正确,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP