8.9.- Los argumentos de la línea de comandos

Awk proporciona un mecanismo que permite pasar argumentos a un script en el momento de su llamada. La variable ARGC y ARGV se inicializan por awk y permiten tratar los valores pasados en la línea de comandos.

El script que llamaremos agenda.awk permite buscar información en el archivo agenda.txt. Podemos buscar la línea correspondiente al nombre de una persona (-n), a su email (-m) o a su código postal (-p).

Los argumentos de la línea de comandos disponibles para awk son almacenados en un array llamado ARGV. ARGC es el número de argumentos de la línea de comando presentes. ARGV está indexado desde 0 a ARGC-1.

Tu programa puede alterar ARGC y los elementos de ARGV. Cada vez que awk alcanza el final de un fichero de entrada, utiliza el siguiente elemento de ARGV como el nombre del siguiente fichero de entrada. Almacenando un cadena distinta en ARGV, se puede cambiar los ficheros que van a ser leídos por tu programa. Puedes usar “” para representar la entrada estándar. Almacenando elementos adicionales e incrementando ARGC puedes causar que se procesen ficheros adicionales.

Si decrementas el valor de ARGC, eso elimina ficheros de entrada del final de la lista de ficheros de entrada a procesar. Grabando el antiguo valor de ARGC en algún lugar, tu programa puede tratar los argumentos eliminados como otra cosa en lugar de cómo nombres de ficheros.

Para eliminar un fichero de mitad de la lista, almacena la cadena nula (“”) en ARGV en lugar del nombre de fichero que quieres que no se procese. Como una característica especial, awk ignora los nombres de ficheros que han sido reemplazados por una cadena nula.

Awk inicializa la tabla ARGV con el nombre del comando (ARGV[0]), los valores pasados en la línea de comandos. Las opciones de awk no se encuentran en la tabla de argumentos, para no perturbar el comportamiento.

El script mostrado anteriormente, aún no hay secciones intermedias. Si se añaden, habrá un error de ejecución ya que los valores -n y Roberto se interpretarán como nombres de archivo a tratar. La solución: memorizar los argumentos de la línea de comandos y retirar de la tabla ARGV los que no corresponden a un archivo.

  • Estudia y pon a la práctica lo aprendido en esta sección.