Cerrado de Ficheros de Entrada y Pipes AWK

Si se usa el mismo nombre de fichero o el mismo comando shell se usa con getline más de una vez durante la ejecución de un programa awk, el fichero es abierto (o el comando es ejecutado) sólo la primera vez. En ese momento, el primer registro de la entrada es leído de ese fichero o comando. La próxima vez que se use ese mismo nombre de fichero o comando con getline, otro registro se leerá de él, y así sucesivamente.

Esto implica que si quieres comenzar la lectura del mismo fichero desde el principio, o si quieres volver a ejecutar un comando (en lugar de leer más salida del comando), debes realizar unos pasos especiales. Lo que puedes usar es la función close, tal y como sigue:

close(fichero) o close(comando)

El argumento fichero o comando puede ser cualquier expresión. Su valor debe ser exactamente el mismo que la cadena que fue usada para abrir el fichero o comenzar el comando – por ejemplo, si abres un pipe con esto:

"sort -r names" | getline foo

entonces debes cerrar el pipe de esta forma:

close("sort -r names")

Una vez que se ejecuta esta llamada a la función, el siguiente getline de ese fichero o comando reabrirá el fichero o reejecutará el comando.

Publicar un comentario

0 Comentarios