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 Chiusura file e pipe.
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 Programma igawk per un programma
che gestisce le istruzioni @include
nidificate.
Questo non è completamente vero. RT
può essere
cambiato se RS
è un’espressione regolare.