我有一个文件,其中有两列对应于起始和结束范围,如下所示:
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}}'