我正在尝试识别unix文件中的重复项并总结这些值。 例如:
我有一个类似的文件:
aa, 05
aa, 02
aa, 01
bb, 01
bb, 12
cc ,02
dd, 03
我需要输出:
aa, 08
bb, 13
cc, 02
dd,03
答案 0 :(得分:2)
这应该可以解决问题:
$ 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