Unix awk命令未按预期工作
我有一个文件输入,如下所示:Unix awk命令未按预期工作,unix,awk,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 看起来您需要保存打印,直到处理完所有行 '{a[$2]=a[$2]+$1}END{for (i in a) print
-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
看起来您需要保存打印,直到处理完所有行
'{a[$2]=a[$2]+$1}END{for (i in a) print i","a[i]}'
还可以尝试printf
将逗号放在正确的位置。尝试:
awk -F, '{arr[$2]+=$1}END{for(i in arr)print i,",",arr[i]}'
您需要在结束块处打印数组,否则for循环将开始为迭代的每个记录打印
awk -F, '{a[$2]+=$1}END{for (i in a) print i","a[i]}' file
哦因此,这意味着不把
结束
就是问题所在。我认为最后一个块将假定为结束
default@zombie:无条件的块在每条线上运行。