如何识别unix文件中的重复项并总结这些值

时间:2014-06-29 19:30:18

标签: linux bash unix awk uniq

我正在尝试识别unix文件中的重复项并总结这些值。 例如:

我有一个类似的文件:

aa,  05
aa, 02
aa, 01
bb, 01
bb, 12
cc ,02
dd, 03

我需要输出:

aa, 08
bb, 13
cc, 02
dd,03

1 个答案:

答案 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