![如何根据第一列合并数据?](https://linux22.com/image/179763/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E7%AC%AC%E4%B8%80%E5%88%97%E5%90%88%E5%B9%B6%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我有一些简单的数据:
digital 5434
ero 3464
3es 69955
digital 1948
ero 5783
ride 5884
我想处理这个输入文件并对第一个字段相同的所有第二个字段值求和。我的最终输出文件应如下所示:
digital 7382
ero 9247
3es 69955
ride 5884
我认为这可以用 awk 来完成?
非常感谢您的帮助。
答案1
这是一个简单的方法:
$ awk '{a[$1]+=$2}END{for(i in a){print i,a[i]}}' data
ero 9247
3es 69955
digital 7382
ride 5884
请注意,这会将文件中的大部分数据存储在内存中,因此对于非常大的文件可能会导致问题。