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


5.3 I separatori di output e come modificarli

Come detto sopra, un’istruzione print contiene una lista di elementi separati da virgole. Nell’output, gli elementi sono solitamente separati da spazi singoli. Non è detto tuttavia che debba sempre essere così; uno spazio singolo è semplicemente il valore di default. Qualsiasi stringa di caratteri può essere usata come separatore di campo in output impostando la variabile predefinita OFS. Il valore iniziale di questa variabile è la stringa " " (cioè, uno spazio singolo).

L’output di un’istruzione print completa è detto un record di output. Ogni istruzione print stampa un record di output, e alla fine ci aggiunge una stringa detta separatore record in output (o ORS). Il valore iniziale di ORS è la stringa "\n" (cioè, un carattere di ritorno a capo). Quindi, ogni istruzione print normalmente genera [almeno] una riga a sé stante.

Per cambiare il tipo di separazione in output di campi e record, si impostano valori differenti alle variabili OFS e ORS. Il posto più indicato per farlo è nella regola BEGIN (vedi la sezione I criteri di ricerca speciali BEGIN ed END), in modo che l’assegnazione abbia effetto prima dell’elaborazione di ogni record in input. Questi valori si possono anche impostare dalla riga di comando, prima della lista dei file in input, oppure usando l’opzione della riga di comando -v (vedi la sezione Opzioni sulla riga di comando). L’esempio seguente stampa il primo e il secondo campo di ogni record in input, separati da un punto e virgola, con una riga vuota aggiunta dopo ogni ritorno a capo:

$ awk 'BEGIN { OFS = ";"; ORS = "\n\n" }
>            { print $1, $2 }' mail-list
-| Amelia;555-5553
-|
-| Anthony;555-3412
-|
-| Becky;555-7685
-|
-| Bill;555-1675
-|
-| Broderick;555-0542
-|
-| Camilla;555-2912
-|
-| Fabius;555-1234
-|
-| Julie;555-6699
-|
-| Martin;555-6480
-|
-| Samuel;555-3430
-|
-| Jean-Paul;555-2127
-|

Se il valore di ORS non contiene un ritorno a capo, l’output del programma viene scritto tutto su un’unica riga.


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