열 파일에 두 개의 숫자가 있는 경우 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
[...]

범위가 특정 값 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}}'

관련 정보