awk expande a janela para 500% para dois números do arquivo de coluna

1

Eu tenho um arquivo com duas colunas correspondentes aos intervalos de início e fim como este:

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

Gostaria de expandir os intervalos de início e fim para até 500%, exceto se o intervalo ultrapassar um determinado valor, N = 1000. Se o intervalo de início-fim já estiver acima de N = 1000, eu quero reescrever o início-fim para uma janela n = 1000 ao redor do centro.

Como posso fazer isso com um one-liner awk / bash?

    
por 719016 13.07.2011 / 21:11

1 resposta

1

Eu descobri este único forro:

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}}'
    
por 13.07.2011 / 23:43

Tags