awk 命令未按预期工作

发布于 2024-11-02 21:12:18 字数 316 浏览 1 评论 0原文

我有一个文件输入如下:

-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

I have a file input as below:

-4.0,vijay
-2.0,chan
-3.0,vijay

and my command is :

 awk -F, '{a[$2]=a[$2]+$1}{for (i in a) print i","a[i]}'

i am expecting

vijay,-7.0
chan,-2.0

the actual output is

vijay -4
vijay -4
chan -2
vijay -7
chan -2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬心 2024-11-09 21:12:18

尝试:

awk -F, '{arr[$2]+=$1}END{for(i in arr)print i,",",arr[i]}'

Try:

awk -F, '{arr[$2]+=$1}END{for(i in arr)print i,",",arr[i]}'
寻找我们的幸福 2024-11-09 21:12:18

看起来您需要保存打印,直到处理完所有行。

'{a[$2]=a[$2]+$1}END{for (i in a) print i","a[i]}'

还可以尝试 printf 将逗号放在正确的位置。

Looks like you need to save the print until all the lines have been processed.

'{a[$2]=a[$2]+$1}END{for (i in a) print i","a[i]}'

Also try printf to get the comma in the right spot.

嘦怹 2024-11-09 21:12:18

您需要在 END 块处打印数组,否则 for 循环将开始打印迭代的每个记录。

awk -F, '{a[$2]+=$1}END{for (i in a) print i","a[i]}' file

You need to print the array at the END block otherwise your for loop will start to print for each record iterated.

awk -F, '{a[$2]+=$1}END{for (i in a) print i","a[i]}' file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文