Successivo: Ordinamento di vettori, Su: Funzionalità avanzate [Contenuti][Indice]
Se si esegue gawk
con l’opzione --non-decimal-data,
si possono avere valori in base diversa da dieci nei dati di input:
$ echo 0123 123 0x123 | > gawk --non-decimal-data '{ printf "%d, %d, %d\n", $1, $2, $3 }' -| 83, 123, 291
Affinché questa funzionalità sia disponibile, i programmi devono essere
scritti in modo che gawk
tratti i dati come valori numerici:
$ echo 0123 123 0x123 | gawk '{ print $1, $2, $3 }' -| 0123 123 0x123
L’istruzione print
tratta le sue espressioni come se fossero stringhe.
Sebbene i campi possano comportarsi come numeri, quando necessario,
essi rimangono sempre stringhe, per cui print
non cerca di elaborarli
come se fossero numeri. Si deve aggiungere zero a un campo affiché venga
considerato come un numero. Per esempio:
$ echo 0123 123 0x123 | gawk --non-decimal-data ' > { print $1, $2, $3 > print $1 + 0, $2 + 0, $3 + 0 }' -| 0123 123 0x123 -| 83 123 291
Poiché capita comunemente di avere dati di tipo decimale con degli zeri iniziali, e poiché l’uso di questa funzionalità può portare a risultati inattesi, il comportamento di default è quello lasciarla disabilitata. Se si vuole, la si deve richiedere esplicitamente.
ATTENZIONE: L’uso di questa opzione non è consigliata. Può provocare errori molto seri eseguendo vecchi programmi. Al suo posto è meglio usare la funzione
strtonum()
per convertire i dati (vedi la sezione Funzioni di manipolazione di stringhe). Questo rende i programmi più facili da scrivere e più facili da leggere, e porta a risultati meno inattesi.Quest’opzione potrebbe sparire dalle versioni future di
gawk
.
Successivo: Ordinamento di vettori, Su: Funzionalità avanzate [Contenuti][Indice]