- 论坛徽章:
- 23
|
回复 31# expert1
可以合并,那么问题就简单了。
我们不需要判断a与b的区间关系,只需要记录每个数字属于哪个section就好了。
举例说明:- $ cat a.txt
- section1
- 20-30
- section2
- 10-20
- $ cat b.txt
- section2
- 25-26
- $ awk -F - '/section/{s=$1}NF==2{for(i=$1;i<=$2;i++)a[i]=s}END{for(i in a) print i,a[i]}' a.txt b.txt | sort -k2,2 -k1n
- 21 section1
- 22 section1
- 23 section1
- 24 section1
- 27 section1
- 28 section1
- 29 section1
- 30 section1
- 10 section2
- 11 section2
- 12 section2
- 13 section2
- 14 section2
- 15 section2
- 16 section2
- 17 section2
- 18 section2
- 19 section2
- 20 section2
- 25 section2
- 26 section2
复制代码 先记录a中每个数字所属的section,然后用b去修定,结果排序。
这样问题就转变成判断连续数字的问题了,只需要将
21 section1
22 section1
23 section1
24 section1
27 section1
28 section1
29 section1
30 section1
改写成
section1
21-34
27-30 |
|