我似乎找不到这个简单任务的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任何帮助!
像这样
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的"逗号修复"编辑了上面的答案.
| 归档时间: |
|
| 查看次数: |
9074 次 |
| 最近记录: |