awk中的脚本

awk中的脚本,awk,unix,Awk,Unix,我有一个文本文件,内容如下: 1,A,100 2,A,200 3,B,150 4,B,100 5,B,250 我需要输出为: A,300 B,500 这里的逻辑是第二个字段为A的所有第三个字段的总和,对于B也是如此 我们如何使用awk实现它?您可以使用散列来实现它,如下所示: awk -F"," '{cnt[$2]+=$3}END{for (x in cnt){printf "%s,%d\n",x,cnt[x]}}' file 嗯,我不准备为您编写和调试代码。但是,您需要的元素是: 可以

我有一个文本文件,内容如下:

1,A,100
2,A,200
3,B,150
4,B,100
5,B,250
我需要输出为:

A,300
B,500
这里的逻辑是第二个字段为A的所有第三个字段的总和,对于B也是如此


我们如何使用awk实现它?

您可以使用
散列来实现它,如下所示:

awk -F"," '{cnt[$2]+=$3}END{for (x in cnt){printf "%s,%d\n",x,cnt[x]}}' file

嗯,我不准备为您编写和调试代码。但是,您需要的元素是:

  • 可以使用将字段分隔符更改为逗号
  • 您关心的字段显然是第二个(
    $2
    )和第三个(
    $3
    )字段
  • 您可以创建自己的来将值累积到中。
    • 我建议使用一个,由字段2索引
$ awk -F"," '{_[$2]+=$3}END{for(i in _)print i,_[i]}' OFS="," file
A,300
B,500