簡體   English   中英

awk-打印重疊范圍

[英]awk - print overlapping 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

至少對我來說,這乍一看很難。

這是用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM