基于另一列中重复出现的awk sum列&;打印每个';这是总结

基于另一列中重复出现的awk sum列&;打印每个';这是总结,awk,Awk,我也有类似的意见 A 3 C 1 A 4 B 2 B 2 output should be A total=7 (3+4) C total=1 (1) B total=4 (2+2) 谁能告诉我在awk怎么做? 输入是awk行输出的一部分,因此请求使用awk解决方案。 谢谢 您可以尝试以下代码: awk ' { a[$1]+=$2 b[$1]=(b[$1]=="")?$2:(b[$1]"+"$2) } END { for (i in a) print

我也有类似的意见

A 3
C 1
A 4
B 2
B 2

output should be 
A total=7 (3+4)
C total=1 (1)
B total=4 (2+2)
谁能告诉我在awk怎么做? 输入是awk行输出的一部分,因此请求使用awk解决方案。
谢谢

您可以尝试以下代码:

awk '
{
    a[$1]+=$2
    b[$1]=(b[$1]=="")?$2:(b[$1]"+"$2)
}
END {
    for (i in a)
        print i" total="a[i]" ("b[i]")"
}' file
输出:

A total=7 (3+4)
B total=4 (2+2)
C total=1 (1)

我想提出另一种方法:

sort -k 1,1 your_file |
cat - <(echo "") |
gawk '
  $1==key {
    line=line " + " $2; sum+=$2
  }
  $1 != key {
    if (NR>1){print key " total=" sum " (" line ")"}
    key=$1
    line=$2
    sum=$2
  }'
sort-k 1,1您的_文件|
猫-
gawk '{print $0 " " NR}' your_file |
sort -k 1,1 | cat - <(echo "") |
gawk '$1==key {line=line " + " $2; sum+=$2} $1 != key {if (NR>1){print nr " " key " total=" sum " (" line ")"}; key=$1; line=$2; sum=$2; nr=$NF}' |
sort -k 1,1n |
cut -d \  -f 2-