我有以下排序文件[按排序-k1,1 -k2,2n -k3,3n排序]: 开始和结束坐标由col2& amp; col3,value由col4:
定义chr11 45643103 45643104 0.005
chr11 45643104 45643108 0
chr11 45643107 45643109 0.007
chr11 45643108 45643110 0.107
我想使用awk程序识别重叠区域,例如这两行
chr11 45643104 45643108 0
chr11 45643107 45643109 0.007
并将输出最宽的拉伸,在整个拉伸过程中获得最高值(来自col4) 因此,根据此示例将输出以下内容:
chr11 45643103 45643104 0.005
chr11 45643104 45643109 0.007
chr11 45643108 45643110 0.107
答案 0 :(得分:0)
从这样的事情开始,考虑一下状态机。
chr==$1 && $2>=stop && !run {
print prev;print;stop=$3;run=1
}
chr==$1 && $2>=stop && run {
print;stop=$3;
}
chr==$1 && $2<stop {
prev=$0;stop=$3;run=0;
}
chr!=$1 {
chr=$1;prev=$0;stop=$3;run=0;
}
(未测试的)