我正在尝试识别 unix 文件中的重复项并对值进行求和。 例如:
我有一个文件,例如:
aa, 05
aa, 02
aa, 01
bb, 01
bb, 12
cc ,02
dd, 03
我需要输出:
aa, 08
bb, 13
cc, 02
dd,03
最佳答案
这应该可以解决问题:
$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=, OFS=, file
bb,13
cc ,2
dd,3
aa,8
对于要排序的自定义排序管道:
$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=, OFS=, file | sort
aa,8
bb,13
cc ,2
dd,3
请参阅 man sort
了解 sort
可以执行的所有操作。
如果您想清除逗号周围的空格,那么一种方法是:
$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=' *, *' OFS=, file | sort
aa,8
bb,13
cc,2
dd,3
关于linux - 如何识别 unix 文件中的重复项并对值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24479495/