Successivo: , Precedente: , Su: Getline   [Contenuti][Indice]


4.10.3 Usare getline da un file

Si usa ‘getline < file’ per leggere il record successivo da file. Qui, file è un’espressione di tipo stringa che specifica il nome-file. ‘< file’ è una cosidetta ridirezione perché richiede che l’input provenga da un posto differente. Per esempio, il seguente programma legge il suo record in input dal file secondary.input quando trova un primo campo con un valore uguale a 10 nel file in input corrente:

{
    if ($1 == 10) {
         getline < "secondary.input"
         print
    } else
         print
}

Poiché non viene usato il flusso principale di input, i valori di NR e FNR restano immutati. Comunque, il record in input viene diviso in modo normale, per cui vengono cambiati i valori di $0 e degli altri campi, producendo un nuovo valore di NF. Viene impostato anche RT.

Per lo standard POSIX, ‘getline < espressione’ è ambiguo se espressione contiene operatori che non sono all’interno di parentesi, ad esclusione di ‘$’; per esempio, ‘getline < dir "/" file’ è ambiguo perché l’operatore di concatenazione (non ancora trattato; vedi la sezione Concatenazione di stringhe) non è posto tra parentesi. Si dovrebbe scrivere invece ‘getline < (dir "/" file)’, se il programma dev’essere portabile su tutte le implementazioni di awk.