列ファイルに2つの数字がある場合、awkはウィンドウを500%に拡張します。

列ファイルに2つの数字がある場合、awkはウィンドウを500%に拡張します。

次のように、開始範囲と終了範囲に対応する2つの列を持つファイルがあります。

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
[...]

範囲が特定の値N = 1000を超えない限り、開始範囲を500%に拡張したいと思います。開始終了範囲がすでに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}}'

おすすめ記事