awk-打印重叠范围

awk-打印重叠范围,awk,overlapping-matches,numeric-ranges,Awk,Overlapping Matches,Numeric Ranges,恐怕我还没有找到一种直接的方法来实现这一点,尽管我尝试了为类似场景调整一些提供的解决方案(但不完全适合我的需要)。鉴于这些数据: 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

恐怕我还没有找到一种直接的方法来实现这一点,尽管我尝试了为类似场景调整一些提供的解决方案(但不完全适合我的需要)。鉴于这些数据:

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

至少对我来说,这比我第一眼看到的要难。

这里有一种在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

awk'{b=e=0;用于(i=$1;i
尝试调整一些提供的解决方案
请将此添加到问题中…这将显示您的努力…否则问题可能会被视为询问免费编码服务。
1122 1127
为什么不应在输出中?@Sundeep:;;;在stackoverflow上未找到另一个解决方案,但我无法再次找到。您可以n链接问题中的数据+添加您尝试在这些链接中不存在的变体…@RomanPerekhrest我再次查看了数据,但我不明白为什么应该这样做,也许我遗漏了什么。无论如何,我实际上错过了一个间隔:
11251126