Opciones De Entrada Y Salida en AWK

El manejo de los formatos de entrada y salida en AWK es una de las cosas mas comunes que se pueden hacer con él, ya que este programa está diseñado para la creación de análisis y reportes.

Para la entrada podemos utilizar la redirección < de Linux o Unix. $ gawk -f inout.awk < input.dat

AWK es un lenguaje interpretado pero está diseñado para recibir argumentos de la terminal, ya sea de archivos de texto o redirecciones de procesos. Por lo que no se necesitan argumentos para definir archivos de entrada.

Manejo de la salida con el comando print

El primer ejemplo es leer un archivo separado por | y sin encabezado, podemos generar anotaciones en el bloque BEGIN para generar encabezados, o párrafos de explicación al generar reportes, en la salida lo convertimos a una tabla separada por tabs.

#!/bin/gawk
# PROGRAMA: inout1.awk
# AUTOR: Otto Hahn Herrera
# FECHA: 2020-05-27
# PROPOSITO: Demostrar las opciones de entrada y salida en AWK
# En este caso es un separador diferente usa inout-test1.dat

BEGIN {FS="|";
    print "Worker\tWorkplace";
    print "-----------------"
}
{print $1 "\t" $3}

El segundo ejemplo, es un CSV normal con encabezado que se convierte en una tabla separada por tabs.

#!/bin/gawk
# PROGRAMA: inout1.awk
# AUTOR: Otto Hahn Herrera
# FECHA: 2020-05-27
# PROPOSITO: Demostrar las opciones de entrada y salida en AWK
# En este caso definimos el separador e ignoramos el encabezado

BEGIN {FS=",";
    print "Worker\tAge";
    print "-----------";
}
NR > 1 {print $1 "\t" $2}  # NR>1 indica que ignoremos la primera línea

Podemos definir el separador de salida en el bloque BEGIN como veremos en el siguiente ejemplo

#!/bin/gawk
# PROGRAMA: inout3.awk
# AUTOR: Otto Hahn Herrera
# FECHA: 2020-05-27
# PROPOSITO: Demostrar las opciones de entrada y salida en AWK
# En este caso definimos el separador de salida y el separador de la entrada

BEGIN {FS="|";
       OFS="\t";
       print "Worker", "Age";
       print "------", "---"
       }
{print $1, $2}

Manejo de la salida con el comando printf

El comando printf nos da mucho mas control a la hora de preparar la salida de nuestros análisis, filtros o procesos. Este comando sigue la sintaxis del comando printf de C.

Modificador Tipo Descripción
N$ posicional un número seguido de un $ indica un campo
- formato rellena el campo a la izquierda con espacios
+ formato antes de la anchura justifica a la derecha
0 formato rellena campos numéricos con ceros
' formato pone comas para separar los miles
%Ns formato da al anchura mínima de N
.prec formato número de dígitos a imprimir después del punto

Las letras para el control de formato son: