Successivo: Getline pipe, Precedente: Getline file, Su: Getline [Contenuti][Indice]
getline
in una variabile da un fileSi usa ‘getline var < file’ per leggere l’input dal file file, e metterlo nella variabile var. Come prima, file è un’espressione di tipo stringa che specifica il file dal quale legggere.
In questa versione di getline
, nessuna delle variabili predefinite è
cambiata e il record non è diviso in campi. La sola variabile cambiata è
var.25
Per esempio, il seguente programma copia tutti i file in input nell’output, ad
eccezione dei record che dicono ‘@include nomefile’.
Tale record è sostituito dal contenuto del file
nomefile:
{ if (NF == 2 && $1 == "@include") { while ((getline line < $2) > 0) print line close($2) } else print }
Si noti come il nome del file in input aggiuntivo non compaia all’interno del
programma; è preso direttamente dai dati, e precisamente dal secondo campo
della riga di @include
.
La funzione close()
viene chiamata per assicurarsi che se nell’input
appaiono due righe @include
identiche, l’intero file specificato sia
incluso ogni volta.
Vedi la sezione Chiudere ridirezioni in input e in output.
Una carenza di questo programma è che non gestisce istruzioni
@include
nidificate
(cioè, istruzioni @include
contenute nei file inclusi)
nel modo in cui ci si aspetta che funzioni un vero preelaboratore di macro.
Vedi la sezione Una maniera facile per usare funzioni di libreria per un programma
che gestisce le istruzioni @include
nidificate.
Questo non è completamente vero. RT
può essere
cambiato se RS
è un’espressione regolare.