使用perl将第三列添加到第二列的特定行

时间:2013-12-02 06:10:35

标签: perl

我有如下输入:

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,那么它应该在第三列中给出总共三个。同样直到文件结束。请帮我解决这个问题..

1 个答案:

答案 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