提取不相交的唯一的范围
时间:2010-11-03 来源:expert1
格式如下:
- A 20 56
- B 40 68
- A 207 236
- C 136 152
- B 86 121
- A 95 110
- B 161 186
- A 145 170
- A 207 236
sort -k2,2n -k 3n,3 urfile|awk -f scr.awk
# cat scr.awk
awk '{if(NR==1){p=$0;max=$3}
if($2<=max){max=$3<max?$3:max;if(!f)f=!f}
else{if(f)f=!f;else print p;max=$3;p=$0}
}
END{if(!f)print p}'
说真的这个比较麻烦,特别这个flag用的很巧妙。
来个易懂的
awk '{a[$1" "$2" "$3];for(i=$2;i<=$3;i++)b[i]++}END{for(j in a){split(j,m," ");flag=1;for(k=m[2];k<=m[3];k++)if(b[k]>1){flag=0;break}}if(flag==1){print j}}'
相关阅读 更多 +