2016-07-18 44 views
-3

我想合并相似的行以创建一个唯一的输出矩阵,它将-符号之后的计数相加。请参阅我下面的例子:合并具有相似ID和总和对应值的行

278-3192 NC_002188.1 
310-2831 NC_007653.1 
384-2206 NC_004068.1 
1059-573 NC_004068.1 

输出

NC_002188.1 3192 
NC_007653.1 2831 
NC_004068.1 2779 
+3

Upvoter ...请解释:) – toolic

+2

@toolic我见过的更好的评论之一:) – zdim

+0

当你说“相似”,我认为你的意思是“相同”? – Borodin

回答

3

您可以使用awk的关联数组:

awk '{split($1,a, "-"); arr[$2]+=a[2]} END{for(i in arr) print i, arr[i]}' file 
2

如果记录已经由NC_xxxx数字排序,你可以不用数组(您也可以在使用前对文件进行排序sort

awk -F'[- ]' 'o!=$3{print o,s;o=$3;s=$2;next}{s+=$2}END{print o,s}' file