- 论坛徽章:
- 16
|
回复 7# huang6894
首先sort -k5 -k2 file ,使$2(坐标起点)升序排列,由于$2<$3(起点<终点)这个是恒成立的。所以按照我的这个思路第N+1行和第N行比较,然后合并。- # awk -v OFS="\t" 'NR==1{tag=$5;start=$2;end=$3;a=$6;b=$4;c=$1}NR>1{
- if($5==tag){
- if($2<end && $3>end)
- end=$3
- else if($3<end) next
- else{
-
- print ">"tag"_"++count,a,c,b,start,end;
- start=$2;end=$3;tag=$5;a=$6;b=$4;c=$1
-
- }
-
-
- }
- else {
- print ">"tag"_"++count,a,c,b,start,end;
- tag=$5;start=$2;end=$3;a=$6;b=$4;c=$1
- count=0
-
- }
-
- }END{print ">"tag"_"++count,a,c,b,start,end}' <<<"refseq2 279363 280352 - NM_001002919 FAM150B
- refseq2 282911 283375 - NM_001002919 FAM150B
- refseq2 285923 286403 - NM_001002919 FAM150B
- refseq2 286090 286543 - NM_001002919 FAM150B
- refseq2 287383 288092 - NM_001002919 FAM150B
- refseq2 287813 288508 - NM_001002919 FAM150B
- refseq1 934142 935012 - NM_021170 HES4
- refseq1 934706 935193 - NM_021170 HES4
- refseq1 934872 935367 - NM_021170 HES4
- refseq1 935046 935752 - NM_021170 HES4
- refseq1 860921 861380 + NM_152486 SAMD11
- refseq1 861102 861593 + NM_152486 SAMD11
- refseq1 865335 865916 + NM_152486 SAMD11
- refseq1 866219 866669 + NM_152486 SAMD11
- refseq1 870952 871476 + NM_152486 SAMD11
- refseq1 874220 874709 + NM_152486 SAMD11
- refseq1 874455 875040 + NM_152486 SAMD11
- refseq1 879088 880161 + NM_152486 SAMD11"
复制代码 结果如下:
>NM_001002919_1 FAM150B refseq2 - 279363 280352
>NM_001002919_2 FAM150B refseq2 - 282911 283375
>NM_001002919_3 FAM150B refseq2 - 285923 286543
>NM_001002919_4 FAM150B refseq2 - 287383 288508
>NM_021170_1 HES4 refseq1 - 934142 935752
>NM_152486_1 SAMD11 refseq1 + 860921 861593
>NM_152486_2 SAMD11 refseq1 + 865335 865916
>NM_152486_3 SAMD11 refseq1 + 866219 866669
>NM_152486_4 SAMD11 refseq1 + 870952 871476
>NM_152486_5 SAMD11 refseq1 + 874220 875040
>NM_152486_6 SAMD11 refseq1 + 879088 880161
2楼也指出来了,为什么那个有重合的没合并呢,我这里是是完全合并了。 |
|