Successivo: , Su: Printf   [Contenuti][Indice]


5.5.1 Sintassi dell’istruzione printf

Una semplice istruzione printf è qualcosa di simile a questo:

printf formato, elemento1, elemento2, …

Come nel caso di print, l’intera lista degli argomenti può opzionalmente essere racchiusa fra parentesi. Anche qui, le parentesi sono obbligatorie se l’espressione di qualche elemento usa l’operatore relazionale ‘>’, che potrebbe essere confuso con una ridirezione dell’output (vedi la sezione Ridirigere l’output di print e printf).

La differenza tra printf e print è l’argomento formato. Questo è un’espressione il cui valore è visto come una stringa; specifica come scrivere in output ognuno degli altri argomenti. È chiamata stringa di formato.

La stringa di formato è molto simile a quella usata dalla funzione di libreria ISO C printf(). Buona parte del formato è testo da stampare così come è scritto. All’interno di questo testo ci sono degli specificatori di formato, uno per ogni elemento da stampare. Ogni specificatore di formato richiede di stampare l’elemento successivo nella lista degli argomenti in quella posizione del formato.

L’istruzione printf non aggiunge in automatico un ritorno a capo al suo output. Scrive solo quanto specificato dalla stringa di formato. Quindi, se serve un ritorno a capo, questo va incluso nella stringa di formato. Le variabili di separazione dell’output OFS e ORS non hanno effetto sulle istruzioni printf. Per esempio:

$ awk 'BEGIN {
>    ORS = "\nAHI!\n"; OFS = "+"
>    msg = "Non v\47allarmate!"
>    printf "%s\n", msg
> }'
-| Non v'allarmate!

Qui, né il ‘+’ né l’esclamazione ‘AHI!’ compaiono nel messaggio in output.