Successivo: OFMT, Precedente: Esempi su print, Su: Stampare [Contenuti][Indice]
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: OFMT, Precedente: Esempi su print, Su: Stampare [Contenuti][Indice]