2010-04-20 69 views
2

我有内容如下的文本文件:脚本中的awk

1,A,100 
2,A,200 
3,B,150 
4,B,100 
5,B,250 

我需要的输出:

A,300 
B,500 

这里的逻辑是所有的第3场的总和,其第2场A和以相同的方式进行B

我们如何使用awk来做到这一点?

回答

2

您可以使用hash为做到这一点:

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

哦,我不起来编写和调试代码为您服务。但是,您需要的元素是:

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