Successivo: Istruzione exit, Precedente: Istruzione next, Su: Istruzioni [Contenuti][Indice]
nextfileL’istruzione nextfile
è simile all’istruzione next.
Tuttavia, invece di terminare l’elaborazione del record corrente, l’istruzione
nextfile richiede ad awk di terminare di elaborare il
file-dati corrente.
Alla fine dell’esecuzione dell’istruzione nextfile,
FILENAME è
aggiornato per contenere il nome del successivo file-dati elencato sulla riga
di comando, FNR è reimpostato a uno, e l’elaborazione riparte con
la prima regola del programma.
Se l’istruzione nextfile raggiunge la fine dei file in input,
vengono eseguite le eventuali regole END presenti.
Un’eccezione a questo si ha se nextfile è invocata durante
l’esecuzione di qualche istruzione all’interno di una regola END;
in questo caso, il programma viene terminato immediatamente.
Vedi la sezione I criteri di ricerca speciali BEGIN ed END.
L’istruzione nextfile è utile quando ci sono parecchi file-dati da
elaborare, ma non è necessario elaborare ogni record in ogni file.
Senza nextfile,
per passare al successivo file-dati, un programma
dovrebbe continuare a leggere i record che non gli servono. L’istruzione
nextfile è una maniera molto più efficiente per ottenere lo stesso
risultato.
In gawk, l’esecuzione di nextfile produce ulteriori effetti:
le eventuali regole ENDFILE
sono eseguite se gawk non
si trova correntemente all’interno di una regola END o
BEGINFILE; ARGIND è
incrementato e le eventuali regole BEGINFILE sono eseguite.
(ARGIND non è stato ancora trattato.
Vedi la sezione Variabili predefinite.)
In gawk, nextfile è utile all’interno di una regola
BEGINFILE per evitare di elaborare un file che altrimenti causerebbe
un errore fatale in gawk.
In questo caso, le regole ENDFILE non vengono eseguite.
Vedi la sezione I criteri di ricerca speciali BEGINFILE ed ENDFILE.
Sebbene possa sembrare che ‘close(FILENAME)’ ottenga lo stesso
risultato di nextfile, non è così. close()
può essere usato solo per chiudere file, pipe e coprocessi che siano
stati aperti tramite ridirezioni. Non ha niente a che vedere con
l’elaborazione principale che
awk fa dei file elencati in ARGV.
NOTA: Per molti anni,
nextfileè stata un’estensione comune. A settembre 2012 si è deciso di includerla nello standard POSIX. Si veda il sito web dell’Austin Group.
Le versioni correnti di BWK awk e mawk
entrambe prevedono nextfile. Tuttavia, non sono consentite istruzioni
nextfile all’interno del corpo delle funzioni
(vedi la sezione Funzioni definite dall’utente).
gawk lo permette; una nextfile all’interno del corpo di una
funzione legge il primo record del file
successivo e inizia l’elaborazione dello stesso
a partire dalla prima regola del programma, esattamente come farebbe
qualsiasi altra istruzione nextfile.
Successivo: Istruzione exit, Precedente: Istruzione next, Su: Istruzioni [Contenuti][Indice]