如何使用 in 中的单个数组打印唯一单词、它们出现的次数以及它们在相关列中的值的总和awk
?
我正在使用awk
:
awk -F, '{sum[$1]+=$2} END{for (x in sum) print x, sum[x]}' inFile
我可以修改上面的命令来打印唯一单词的总出现次数吗?以下示例输入的结果类似于以下结果:
结果(打印结果的顺序无关紧要):
A 2 25
B 1 12
C 3 18
输入:
A,15
C,13
C,4
A,10
B,12
C,1
我可以添加另一个数组来分别计算它们,但我认为应该有另一种方法来使用相同的数组打印它。
数组中是否有任何索引sum
来存储看到的总单词?
不,没有这样的索引。数组值不计算它们增加了多少次。这里最自然的做法是使用第二个数组:
您也可以使用 Kos 的答案中所示的二维数组,但是正如您所看到的,这实际上并没有以任何方式简化事情。或者,您可以使用一些 perl 魔法:
不,这不是线路噪音,是的,它使用单个阵列来打印所有内容。
这应该这样做:
基本上,您将数组替换为多维数组,以便存储每个唯一第一个字段的出现次数及其相关第二个字段的总和。