对于列文件中的两个数字,awk 将窗口扩展至 500%

对于列文件中的两个数字,awk 将窗口扩展至 500%

我有一个文件,其中有两列对应于起始和结束范围,如下所示:

awk '{print $2"-"$3}' file.txt
91082802-91082990
94018177-94018321
146945732-146945949
88701397-88701594
80922510-80922643
28800551-28800680
23612818-23613016
69178478-69178630
107524531-107524669
73153734-73154149
[...]

我想将起始范围扩大到 500%,除非范围超出某个值,N=1000。如果开始结束范围已经高于 N=1000,我想将开始结束重写为中心周围的 an=1000 窗口。

我怎样才能用 awk/bash 语句来做到这一点?

答案1

我发现了这一班轮:

awk '{len=$3-$2+1; mid=($2+$3)/2;
      if (len>1000) {printf "%i-%i\n", mid-500, mid+499}
      else {newlen=len*5>1000?1000:len*5;
            printf "%i-%i\n", mid-(newlen/2), mid+newlen/2-1}}'

相关内容