Formatando arquivo de texto com comando awk

Formatando arquivo de texto com comando awk

Estou usando este comando:

awk 'NR>1 {print $1"  "$2}' fort.75 > newfort.75

e obtendo a saída como

     7  -2.2964292555E+000
     8 -2.3013363831E+000
     9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

Mas o o/p desejado é

      7 -2.2964292555E+000
      8 -2.3013363831E+000
      9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

Os valores no primeiro campo devem ser formatados de forma que todos tenham a mesma largura. Além disso, o segundo campo deve começar na mesma coluna em cada linha.

Responder1

Você possivelmente quer dizer que gostaria de obter saída em colunas (embora no seu exemplo os dados também sejam diferentes). Se sim, tente isto:

awk 'NR>1 {print $1 "\t" $2}' fort.75 > newfort.75

Isso separaria sua saída por um caractere TAB \t.

Outra possibilidade é usar printfconforme sugerido por Archemar:

awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75

onde a primeira coluna é formatada (neste caso) com largura de 4 caracteres - ajuste conforme desejado. O espaço é preenchido pelo espaço " " (sem trocadilhos) e nenhuma TAB é usada. Os números de ponto flutuante, no entanto, também são reformatados, portanto, verifique se isso está correto para você. Caso contrário, trate a segunda coluna como uma string:

awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75

informação relacionada