免费注册 查看新帖 |

Chinaunix

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

求助 统计一个文件中的行是否在另外5个文件中出现,并输出 [复制链接]

论坛徽章:
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
11 [报告]
发表于 2015-08-21 01:56 |只看该作者
shishi:
  1. #!/usr/bin/perl
  2. use 5.010;

  3. my @file = qw/f1 f2 f3 f4 f5 fc/;
  4. @ARGV    = pop @file;
  5. my %it   = map { $_, {} } <>;
  6. @ARGV    = @file;
  7. $it{$_} and $it{$_}{$ARGV}++ while <>;

  8. my ($void) = %it;
  9. say join "\t", $" x ( length($void) - 1 ), @file, 'total';

  10. for ( sort { keys %{ $it{$b} } <=> keys %{ $it{$a} } } keys %it ) {
  11.     my $wig = $_, chomp;
  12.     my $som = keys %{ $it{$wig} };
  13.     say join "\t", $_, map( $_ || 0, @{ $it{$wig} }{@file} ), $som;
  14. }
复制代码

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2015-12-16 09:17:4315-16赛季CBA联赛之广夏
日期:2016-04-05 11:56:15
12 [报告]
发表于 2015-08-21 09:06 |只看该作者
回复 10# MMMIX
谢谢!我学习学习!


   

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2015-12-16 09:17:4315-16赛季CBA联赛之广夏
日期:2016-04-05 11:56:15
13 [报告]
发表于 2015-08-21 09:10 |只看该作者
回复 11# rubyish
谢谢


   

论坛徽章:
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
14 [报告]
发表于 2015-08-25 05:33 |只看该作者
回复 9# 不仅仅是符号

虽然挺笨的

   
while ($line=<INN>) {
        chomp $line;
        @colu=split(/\t/,$line);
        $key=$colu[0]."\t".$colu[1]."\t".$colu[2]."\t".$colu[3]."\t".$colu[4];
        $hash{$key}=1;
}


0: use perltidy [ perltidy -b abc.pl ]

  1. my %hash;
  2. while ( my $line = <INN> ) {
  3.     chomp $line;
  4.     my @colu = split( /\t/, $line );
  5.     my $key =
  6.         $colu[0] . "\t"
  7.       . $colu[1] . "\t"
  8.       . $colu[2] . "\t"
  9.       . $colu[3] . "\t"
  10.       . $colu[4];
  11.     $hash{$key} = 1;
  12. }
复制代码
1: use join

  1. my %hash;
  2. while ( my $line = <INN> ) {
  3.     chomp $line;
  4.     my @colu = split /\t/, $line;
  5.     my $key = join "\t", @colu;
  6.     $hash{$key} = 1;
  7. }
复制代码
2: no chomp;

  1. my %hash;
  2. while (<INN>) {
  3.     my @colu = split;
  4.     my $key = join "\t", @colu;
  5.     $hash{$key} = 1;
  6. }
复制代码
3: no tmp array

  1. my %hash;
  2. while (<INN>) {
  3.     my $key = join "\t", split;
  4.     $hash{$key} = 1;
  5. }
复制代码
4: split /\t/ + join "\t" ==> do NOTHING!!

  1. my %hash;
  2. while (<INN>) {
  3.     chomp;
  4.     $hash{$_} = 1;
  5. }
复制代码
5: no chomp; this scenario BUUUUUU xuyao chomp

  1. my %hash;
  2. while (<INN>) {
  3.     $hash{$_} = 1;
  4. }
复制代码
6: use map

  1. my %hash = map { $_, 1 } <INN>;
  2. my %hash = map { chomp; $_, 1 } <INN>;    # if chomp
  3. my %hash = map { $_, chomp } <INN>;       # if chomp
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP