Successivo: Istruzione exit, Precedente: Istruzione next, Su: Istruzioni [Contenuti][Indice]
nextfile
L’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]