如果bash中第一列中的相应值相同,如何在第二列中添加值?

时间:2015-10-14 16:42:47

标签: bash

如果第1列中的值相同,我需要在第2列中添加值:

#sorted-file.txt
a 1
a 5
a 4
b 3
b 7
b 10
#so on ..

#out.txt
a 10
b 20
#so on ..

1 个答案:

答案 0 :(得分:3)

您可以使用awk:

awk '{sums[$1]+=$2} END{for (i in sums) print i, sums[i]}' file
a 10
b 20

上述解决方案可能会根据关联数组的内部哈希值更改列的顺序。要维护原始订单,请使用:

awk '!($1 in sums){ord[++n]=$1} {sums[$1]+=$2} 
     END{for (i=1; i<=n; i++) print ord[i], sums[ord[i]]}' file
a 10
b 20