Ejemplos de sentencias print AWK

Aquí aparece un ejemplo de impresión de una cadena que contiene caracteres de retorno de carro o nueva línea empotrados:

awk 'BEGIN { print "línea uno\nlínea dos\nlínea tres" }'

produce una salida como esta:

línea uno
línea dos
línea tres

Aquí tienes un ejemplo que imprime los dos primeros campos de cada registro de entrada, con un espacio  entre ellos:

awk '{ print $1, $2 }' inventario

La salida presentaría la siguiente forma:

Jan 13
Feb 15
Mar 15
...

Un error común en el uso de la sentencia print es omitir la coma entre dos items. Esto a menudo produce el efecto de imprimir los dos valores sin separar por un espacio en blanco. La razón de esto es que la yustaposición de dos expresiones tipo carácter en awk realiza la concatenación de ellas. Por ejemplo, sin la coma:

awk '{ print $1 $2 }' inventario

imprime:

Jan13
Feb15
Mar15
...

Debido a que esta salida no le resultaría informativa a la gente que no conociese el contenido del fichero “invertario”, una línea de cabecera al principio aclararía mucho dicha salida. Añadamos pues, una cabecera a nuestro listado de meses ($1) y canastas verdes enviadas ($2). Nosotros hacemos esto usando el patrón BEGIN para hacer que la cabecera sea impresa una sola vez:

awk 'BEGIN {  print "Meses Canastas"
print "----- --------" }
{ print $1, $2 }' inventario

¿Has conseguido averiguar qué ocurre? El programa imprime lo siguiente:

Meses Canastas
----- --------
Jan 13
Feb 15
Mar 15
...

¡Las cabeceras y las líneas de detalle no están alineadas! Podemos arreglar esto imprimiendo algunos espacios en blanco entre los dos campos:

awk 'BEGIN { print "Meses Canastas"
print "----- --------" }
{ print $1, " ", $2 }' inventario

Puedes imaginar que esta forma de alineación de columnas se puede volver realmente complicado cuando tienes que cuadrar muchas columnas. Contar los espacios para dos o tres columnas puede ser simple, pero con más de tres columnas te puedes perder bastante facílmente. Este es el motivo por el que se creó la sentencia printf; una de sus especialidades es la de alinear las columnas de datos.

Publicar un comentario

0 Comentarios