【问题标题】:summing the values of a column based on the id of another column using Linux tools使用 Linux 工具根据另一列的 id 对列的值求和
【发布时间】:2011-07-22 14:23:32
【问题描述】:

我有一个用“ ”分隔的文件,其中包含几个字段。我知道如何选择一个特定的字段并自行求和,但想知道是否有一种使用 linux 实用程序的干净方法,否则我将在 C 中完成。

我所说的一个例子:

FILE(有更多字段,但这些是唯一对这种情况重要的字段):

1 36
2 96
5 84422
2 2
1 655

所以,对于这个小例子,我想要:

1 691
2 98
5 84422

我不确定是否真的值得尝试使用 linux 实用程序,但由于我正在尝试使用这些工具扩展我的知识,我想我会问它是否 1.) 可能,2.) 实用。

【问题讨论】:

    标签: linux csv utilities


    【解决方案1】:
    $ perl -ne '/ /; $x{$`}+=$'\''; END { print "$_ $x{$_}\n" foreach keys %x; }' <<__END__
    > 1 36
    > 2 96
    > 5 84422
    > 2 2
    > 1 655
    > __END__
    1 691
    2 98
    5 84422
    

    【讨论】:

      【解决方案2】:
      awk '{ a[$1] += $2 } END { for (i in a) { print i " " a[i] } }' input.txt | sort -n
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多