Sentencias frente a Líneas en awk

Bastante a menudo, cada línea en un programa  awk es una sentencia separada o regla separada, como esta:

awk '/12/  { print $0 }

/21/ { print $0 }' Lista-BBS inventario-enviado

Pero algunas veces una sentencia puede ocupar más de una línea, y una línea puede contener varias sentencias. Puedes partir una sentencias en múltiples líneas insertando un carácter newline (salto de línea) detrás de alguno de los siguientes caracteres:

,    {    ?    :    ||    &&    do    else

Un carácter newline el cualquier otro punto es considerado como el final de una sentencia.

Si te gustaría partir una única sentencia en dos líneas en un determinado punto en el cual un carácter newline terminaría dicha sentencia, puedes continuarla finalizando la primera línea con un carácter  de  barra invertida, ‘\’. Esto esta permitido absolutamente en cualquier sitio de la sentencia, incluso en mitad de una cadena o expresión regular. Por ejemplo:

awk '/Este programa es demasiado grande, así que continua la \
 en la línea siguiente / { print $1 }'

Nosotros no hemos utilizado, por norma, el uso de la continuación de una línea mediante la barra  invertida en los programas de ejemplo de este manual. Ya que no hay límite en la longitud de una línea, nunca es estrictamente necesario particionar ésta; es simplemente por cuestión de estética. La continuación mediante barra invertida es muy útil cuando tu programa awk está en un fichero fuente independiente, en lugar de ser tecleado en la línea de comandos.

Precaución: la continuación de línea usando la barra invertida no funciona tal y como se describe aquí bajo la C Shell. La continuación con barra invertida funciona en tus ficheros con programas awk, y también en los programas que se lanzan escribiéndolos directamente en la línea de comandos teniendo en cuenta que estés usando el Bourne shell o Bourne-again Shell. Pero el C shell usado en Unix Berkeley se comporta de forma diferente! Bajo este Shell, debes usar dos barras invertidas en una fila, seguido por un carácter newline.

Cuando las sentencias awk dentro de una regla son cortas, podrías desear poner más de una en una misma línea. Se puede hacer esto separando las sentencias mediante puntos y coma ‘;’. Esto se aplica también a las mismas reglas. Por lo que, el programa de más arriba se podría haber escrito:

/12/ { print $0 } ; /21/ { print $0 }

Nota: el requerimiento de que las reglas en la misma línea deben ser separadas por puntos y comas es un cambio reciente en el Lenguaje awk; fue hecho por consistencia con el tratamiento de las sentencias dentro de una acción.

Publicar un comentario

0 Comentarios