Otros argumentos de la línea de comandos - AWK

Cualesquiera argumentos adicionales en la línea de comando son tratados normalmente como ficheros de entrada a ser procesados en el orden especificado. Sin embargo, un argumento tiene la forma variable=valor, lo que significa asignar el valor valor a la variable variable.

Todos estos argumentos están disponibles para tu programa awk en el array ARGV. Las opciones de la línea de comando y el texto del programa (si está presente) son omitidos del array ARGV. Todos los otros argumentos, incluído la asignación de variables son incluídos en el array ARGV.

La distinción entre los argumentos nombres de ficheros y argumentos de asignación de variables se hace cuando awk va a abrir el siguiente fichero de entrada. En ese punto de la ejecución, chequea el “nombre de fichero” para ver si es realmente un asignación de variable; si es así, awk fija el valor de la variable en lugar de leer el fichero.

Por lo tanto, las variables reciben realmente su valor, los valores especificados, después de que todos los ficheros especificados previamente hayan sido leídos. En particular, los valores de variables asignadas en esta fashion no están disponibles en la regla BEGIN, ya que tales reglas se ejecutan antes de que awk comienze el escaneo de la lista de argumentos.

En algunas implementaciones previas de awk, cuando la asignación de variable ocurría antes de cualquiera de los nombres de ficheros, la asignación sucedería antes de que se ejecute la regla BEGIN. Algunas aplicaciones pueden ser dependientes de esta “característica”.

La característica de asignación de variable es más útil para asignar valores a variables tales como RS, OFS y ORS, las cuales controlan los formatos de entrada y salida, antes del escaneo de los ficheros de datos. También es útil para controlar el estado si se necesitan múltiples pasadas sobre un fichero de datos. Por ejemplo:

awk 'pass == 1 { pass 1 stuff }
pass == 2 { pass 2 stuff }' pass=1 datafile pass=2 datafile












Publicar un comentario

0 Comentarios