2010-04-20 100 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