perl编写程序求出一个文件(以逗号隔开)中从第七列到最后列中元素出现的次数,行与行之间长度不同

文件如下:at1g3400,2000,3000,4000,5000,5,6000,A-B,B1,C1,D1at2g3401,2001,3001,4001,5001,4,6... 文件如下:
at1g3400,2000,3000,4000,5000,5,6000,A-B,B1,C1,D1

at2g3401,2001,3001,4001,5001,4,6100,A-B,F1
at3g3402,2500,3500,4004.5050,6,6200,C1,F1,G1,H2,H1

统计从第七列(第一行的A-B)开始每个元素在文件中出现的次数
展开
 我来答
jianxia2k
推荐于2016-07-06 · TA获得超过399个赞
知道小有建树答主
回答量:365
采纳率:82%
帮助的人:199万
展开全部

仔细数了一下,你说的第7列,实际上是第8列。

这个程序很简单,做一个计数的hash表,以“元素”为主键,缺省值都为0,看到一个就+1就行了。


#!/usr/bin/perl
my %hash;
open FILE,"<a";
foreach my $line (<FILE>)
{
    # 去掉每行尾的回车符
    chop($line) while ($line =~ /[\r\n]$/);
    my @fields = split(/,/, $line);
    # 从第8列开始
    for (my $i=7; $i<@fields; $i++)
    {
        $hash{$fields[$i]}++;
    }
}
close FILE;
foreach my $key (keys %hash)
{
    print "[$key]:$hash{$key}\n";
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式