Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix awk命令未按预期工作_Unix_Awk - Fatal编程技术网

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:无条件的块在每条线上运行。