- 论坛徽章:
- 16
|
回复 1# 清泉一边 - [root@localhost tmp]# cat a
- a 1 6
- a 2 7
- a 15 19
- b 7 32
- a 3 9
- a 21 25
- b 2 8
- b 5 11
- a 2 13
- b 13 17
- b 19 22
- c 3 5
- c 5 7
- c 200 400
- a 100 120
- d 5 9
- d 3 5
- m 2 5
- awk 'NR == FNR{ a[$2" "$3]=$1 }NR>FNR{for(i in a){ flag=0
- >
- > if(a[i]==$1){ split(i , m ," ")
- >
- > if ( ($2 > m[1] && $2 < m[2]) || ($3 > m[1] && $3 < m[2]) || ($2 < m[1] && $3 > m[2]) )
- >
- > flag = 1 }
- >
- > if (flag) delete a[i]
- > }}END { for(i in a)print a[i]" "i}' a a
- a 100 120
- c 200 400
- a 15 19
- m 2 5
- d 3 5
- a 21 25
- c 5 7
- d 5 9
复制代码 如果取决区间无重合,比如1 3和3 5/ 6 8 和8 10 / 7 9和 7 9 ,这个脚本可以解决你的问题。
当然前提是$2<$3,如果不是,也不是什么难题,加个条件就能过滤了。 |
|