我有一个文件输入如下:
-4.0,vijay
-2.0,chan
-3.0,vijay
我的命令是:
awk -F, '{a[$2]=a[$2]+$1}{for (i in a) print i","a[i]}'
我期待
vijay,-7.0
chan,-2.0
实际输出是
vijay -4
vijay -4
chan -2
vijay -7
chan -2
答案 0 :(得分:1)
看起来你需要保存打印件,直到所有的线都被处理完毕。
'{a[$2]=a[$2]+$1}END{for (i in a) print i","a[i]}'
还可以尝试printf
将逗号放在正确的位置。
答案 1 :(得分:1)
尝试:
awk -F, '{arr[$2]+=$1}END{for(i in arr)print i,",",arr[i]}'
答案 2 :(得分:0)
您需要在END块打印数组,否则您的for循环将开始为每个迭代记录打印。
awk -F, '{a[$2]+=$1}END{for (i in a) print i","a[i]}' file