使用awk基于两个匹配字段的sum列

Cha*_*aff 6 awk

我似乎找不到这个简单任务的awk解决方案.我可以根据一个匹配字段($ 1)轻松地将一列($ 3)与:

awk -F, '{array[$1]+=$3} END { for (i in array) {print i"," array[i]}}' datas.csv
Run Code Online (Sandbox Code Playgroud)

现在,我该如何基于两个字段来做到这一点?让我们说$ 1和$ 2?这是一个示例数据:

P1,gram,10  
P1,tree,12  
P1,gram,34  
P2,gram,23  
...
Run Code Online (Sandbox Code Playgroud)

如果第一个和第二个字段匹配,我只需要对第3列求和.

Thanx任何帮助!

Ray*_*oal 6

像这样

awk -F, '{array[$1","$2]+=$3} END { for (i in array) {print i"," array[i]}}' datas.csv
Run Code Online (Sandbox Code Playgroud)

我的结果

P1,tree,12
P1,gram,44
P2,gram,23
Run Code Online (Sandbox Code Playgroud)

编辑

由于OP需要逗号留在输出中,我使用@ yi_H的"逗号修复"编辑了上面的答案.

  • 逗号修复:`array [$ 1","$ 2]` (2认同)