awk命令没有按预期工作

时间:2011-04-23 14:14:27

标签: unix awk

我有一个文件输入如下:

-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

3 个答案:

答案 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