使用 Linux 工具根据另一列的 id 对列的值求和
Posted
技术标签:
【中文标题】使用 Linux 工具根据另一列的 id 对列的值求和【英文标题】:summing the values of a column based on the id of another column using Linux tools 【发布时间】: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.) 实用。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于使用 Linux 工具根据另一列的 id 对列的值求和的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:对列的每个组值求和(或差),直到在另一列上满足条件