如何检查范围是否与其他范围重叠并合并重叠的范围?示例:
10-1000,15-350,50-1500,2100,1700-1800,45,40,145,2-1300
我想要的结果是:
2-1500,1700-1800,2100
我试着制定一个如何编码的计划,但是毫无进展。有没有一个有用的软件包可以使用?如果没有,我应该采取什么方法?
8tntrjer1#
使用sort和awk:
sort
awk
tr , '\n' | sort -n | awk ' BEGIN { FS = OFS = "-" } NF == 1 { $2 = $1 } $2 <= end { next } $1 <= end { end = $2 next } { emit() start = $1 end = $2 } END { emit() } function emit() { if (NR != 1) { if (start == end) print start else print start, end } }' | paste -sd,
$ sh ./merge.sh <<<10-1000,15-350,50-1500,2100,1700-1800,45,40,145,2-1300 2-1500,1700-1800,2100
1条答案
按热度按时间8tntrjer1#
使用
sort
和awk
: