使用 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:对列的每个组值求和(或差),直到在另一列上满足条件

如何根据另一列的值获取单行值?

Pyspark:如何根据另一列的值填充空值

Pyspark:如果具有特定 id 的任何行包含 null,如何根据另一列派生新列的值?

根据每个值对列的值进行分组[重复]

根据循环内另一列的值将列的值更改为nan