我有如下输入:
atom 1 23
atom 1 13
atom 1 22
atom 1 24
atom 2 99
atom 2 98
atom 2 21
atom 3 15
atom 3 20
atom 4 19
atom 5 11
并且我想要总计第三列,但它应该报告,好像它在第二列中读取1,它应该在第三列中给出所有1的值的总和。类似地,如果它是2,则在第二列中它应该在第三列中给出总共2的值。类似地,然后在第二列中,如果它是3,那么它应该在第三列中给出总共三个。同样直到文件结束。请帮我解决这个问题..
答案 0 :(得分:1)
也许以下内容会有所帮助:
use strict;
use warnings;
my %hash;
while (<>) {
my @elems = split;
$hash{ $elems[1] } += $elems[2];
}
print "atom $_ $hash{$_}\n" for sort { $a <=> $b } keys %hash;
用法:perl script.pl inFile [>outFile]
最后一个可选参数将输出定向到文件。
数据集输出:
atom 1 82
atom 2 218
atom 3 35
atom 4 19
atom 5 11