Successivo: Modificatori di formato, Precedente: Printf Fondamenti, Su: Printf [Contenuti][Indice]
Uno specificatore di formato inizia col carattere ‘%’ e termina con
una lettera di controllo del formato; e dice all’istruzione
printf
come stampare un elemento. La lettera di controllo del
formato specifica che tipo
di valore stampare. Il resto dello specificatore di formato è costituito da
modificatori facoltativi che controllano come stampare il valore,
per esempio stabilendo la larghezza del campo. Ecco una lista delle
lettere di controllo del formato:
%c
Stampa un numero come un carattere; quindi, ‘printf "%c", 65’ stampa la lettera ‘A’. L’output per un valore costituito da una stringa è il primo carattere della stringa stessa.
NOTA: Lo standard POSIX richiede che il primo carattere di una stringa sia stampato. In localizzazioni con caratteri multibyte,
gawk
tenta di convertire i primi byte della stringa in un carattere multibyte valido e poi di stampare la codifica multibyte di quel carattere. Analogamente, nella stampa di un valore numerico,gawk
ammette che il valore appartenga all’intervallo numerico di valori che possono essere contenuti in un carattere multibyte. Se la conversione alla codifica multibyte non riesce,gawk
usa gli ultimi otto bit della cifra (quelli meno significativi) come carattere da stampare.Altre versioni di
awk
generalmente si limitano a stampare il primo byte di una stringa o i valori numerici che possono essere rappresentati in un singolo byte (0–255).
%d
, %i
Stampa un numero intero in base decimale. Le due lettere di controllo sono equivalenti. (La specificazione ‘%i’ è ammessa per compatibilità con ISO C.)
%e
, %E
Stampa un numero nella notazione scientifica (con uso di esponente). Per esempio:
printf "%4.3e\n", 1950
stampa ‘1.950e+03’, con un totale di quattro cifre significative, tre delle quali seguono il punto che separa la parte intera da quella decimale [in Italia si usa la virgola al posto del punto] (L’espressione ‘4.3’ rappresenta due modificatori, introdotti nella prossima sottosezione). ‘%E’ usa ‘E’ invece di ‘e’ nell’output.
%f
Stampa un numero in notazione a virgola mobile. Per esempio:
printf "%4.3f", 1950
stampa ‘1950.000’, con un totale di quattro cifre significative, tre delle quali vengono dopo il punto decimale. (L’espressione ‘4.3’ rappresenta due modificatori, introdotti nella prossima sottosezione).
In sistemi che implementano il formato a virgola mobile, come specificato dallo standard IEEE 754, il valore infinito negativo è rappresentato come ‘-inf’ o ‘-infinity’, e l’infinito positivo come ‘inf’ o ‘infinity’. Il valore speciale “not a number” [non è un numero] viene scritto come ‘-nan’ o ‘nan’ (vedi Definizioni matematiche).
%F
Come ‘%f’, ma i valori di infinito e di “not a number” sono scritti in lettere maiuscole.
Il formato ‘%F’ è un’estensione POSIX allo standard ISO C; non tutti
i sistemi lo prevedono. In tali casi,
gawk
usa il formato ‘%f’.
%g
, %G
Stampa un numero usando o la notazione scientifica o quella a virgola mobile, scegliendo la forma più concisa; se il risultato è stampato usando la notazione scientifica, ‘%G’ usa ‘E’ invece di ‘e’.
%o
Stampa un numero intero in ottale, senza segno (vedi Numeri non-decimali).
%s
Stampa una stringa.
%u
Stampa un numero intero decimale, senza segno.
(Questo formato è poco usato, perché tutti i numeri in awk
sono a virgola mobile; è disponibile principalmente per compatibilità col
linguaggio C.)
%x
, %X
Stampa un intero esadecimale senza segno; ‘%X’ usa le lettere da ‘A’ a ‘F’ invece che da ‘a’ a ‘f’ (vedi Numeri non-decimali).
%%
Stampa un solo carattere ‘%’. Questa notazione non serve per stampare alcun argomento e ignora eventuali modificatori.
NOTA: Quando si usano lettere di controllo del formato per numeri interi per stampare valori esterni all’intervallo massimo disponibile nel linguaggio C per i numeri interi,
gawk
usa lo specificatore di formato ‘%g’. Se si specifica l’opzione --lint sulla riga di comando (vedi Opzioni),gawk
emette un messaggio di avvertimento. Altre versioni diawk
possono stampare valori non validi, o comportarsi in modo completamente differente. (a.b.)
Successivo: Modificatori di formato, Precedente: Printf Fondamenti, Su: Printf [Contenuti][Indice]