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]