当前3列相同时,添加第4列

时间:2013-04-24 20:35:13

标签: python unix awk

我有这样的文件,其中一些行在前3列中相同,第4列中的值不同。如果前3列相同,我想要汇总第4列中的所有值:

chr1 241783  286397   52
chr1 241783  286397   53
chr1 241783  286397   53
chr2 10500  25700   57
chr2 10500  25700   59
chr2 10500  25700   59

我想要输出文件如下:

chr1 241783  286397 158
chr2 10500  25700   175

我可以使用awk打印出文件中的单个相同值,我在awk '!array[$1,$2,$3]++'的帖子中看到了这个值。但我想总结一下。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

$ awk '{a[$1FS$2FS$3]+=$4}END{for(k in a)print k,a[k]}' file
chr2 10500 25700 175
chr1 241783 286397 158