如何根据另一列中的值对列中的值求和?

Sam*_*Sam 14 scripting text-processing

我有一个文本文件是:

ABC 50
DEF 70
XYZ 20
DEF 100
MNP 60
ABC 30
Run Code Online (Sandbox Code Playgroud)

我想要一个输出,它总结了各个值并将其显示为结果.例如,文件中所有ABC值的总和为(50 + 30 = 80),DEF为(100 + 70 = 170).所以输出应该总结所有唯一的第一列名称 -

ABC 80
DEF 170
XYZ 20
MNP 60
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢

gho*_*g74 14

$ awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}' file
ABC 80
XYZ 20
MNP 60
DEF 170
Run Code Online (Sandbox Code Playgroud)


ggi*_*oux 5

awk '{sums[$1] += $2} END { for (i in sums) printf("%s %s\n", i, sums[i])}' input_file | sort

如果您不需要按字母顺序排序的结果,只需删除该| sort部分。


Gre*_*con 5

$ perl -lane \
    '$sum{$F[0]} += $F[1];
     END { print "$_ $sum{$_}"
             for sort grep length, keys %sum }' \
    input
ABC 80
DEF 170
MNP 60
XYZ 20