不知道这是否是这个问题的正确标题,因为我是Perl的新手,但我有一个感兴趣的2列文本文件:
AB Volume
100 280
137 250
150 375
100 100
100 600
137 200
Run Code Online (Sandbox Code Playgroud)
我想总结基于AB#的卷,结果是输出
AB Instances Volume
100 3 980
137 2 450
150 1 375
Run Code Online (Sandbox Code Playgroud)
我到目前为止所做的只是在输出文件中显示不同的AB,但我很难得到体积计数的总和.
$isAB{$AB} = 1;
$isVolume{$Volume} =1;
$numAB{$AB}++;
print "AB\tInstances\tVolume\n";
for $AB (sort {$a<=>$b;} keys %numAB) {
print "$AB\t$numAB{$AB}\n";
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢
怎么样:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
my %res;
while(<DATA>) {
chomp;
my @fields = split;
$res{$fields[0]}{instance}++;
$res{$fields[0]}{volume} += $fields[1];
}
foreach(sort {$a<=>$b} keys(%res)) {
say "$_\t$res{$_}{instance}\t$res{$_}{volume}";
}
__DATA__
100 280
137 250
150 375
100 100
100 600
137 200
Run Code Online (Sandbox Code Playgroud)
输出:
100 3 980
137 2 450
150 1 375
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2224 次 |
最近记录: |