Formatear archivo de texto con el comando awk

Formatear archivo de texto con el comando awk

Estoy usando este comando:

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

y obteniendo la salida como

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

Pero la operación deseada es

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

Los valores del primer campo deben tener el mismo formato para que todos tengan el mismo ancho. Además, el segundo campo debe comenzar en la misma columna en cada línea.

Respuesta1

Posiblemente quiera decir que le gustaría generar resultados en columnas (aunque en su ejemplo los datos también difieren). Si es así, prueba esto:

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

Eso separaría su salida por un carácter TAB \t.

Otra posibilidad es utilizar printfcomo sugiere Archemar:

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

donde la primera columna tiene el formato (en este caso) de 4 caracteres de ancho; ajústela como desee. El espacio se llena con el espacio " " (sin juego de palabras) y no se utiliza TAB. Sin embargo, los números de coma flotante también se reformatean, así que compruebe si le parece bien. De lo contrario, trate la segunda columna como una cadena:

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

información relacionada