0

恐怕我还没有遇到这样做的直接方法,尽管我尝试为类似的场景调整一些提供的解决方案(但不完全满足我的需要)。鉴于此数据:

1118 1120
1121 1124
1122 1127
1125 1126
1128 1133
1130 1135
1136 1139
1137 1138
1140 1145

它已经按第 1 列排序。除了第一行和最后一行,其他所有的间隔都成对重叠。所以我想要一个只有重叠范围的输出:

1122 1124
1125 1126
1130 1133
1137 1138

至少对我来说,这比我乍一看更难。

4

1 回答 1

0

这是在 awk 中执行此操作的一种方法。可能有更有效的方法。

awk '{b=e=0; for(i=$1; i<=$2; i++) { if (exists[i]) if(b==0) {b=e=i} else {e=i}; exists[i]=i; } if(b) print b,e; }' input_file
于 2017-07-18T22:13:30.737 回答