Successivo: , Su: Variabili predefinite   [Contenuti][Indice]


7.5.1 Variabili predefinite modificabili per controllare awk

La seguente è una lista alfabetica di variabili che è possibile modificare per controllare come awk gestisce alcuni compiti.

Le variabili che sono specifiche di gawk sono contrassegnate da un cancelletto (‘#’). Queste variabili sono estensioni gawk. In altre implementazioni di awk, o se gawk è eseguito in modalità compatibile (vedi la sezione Opzioni sulla riga di comando), non hanno un significato speciale. (Eventuali eccezioni sono menzionate nella descrizione di ogni variabile.)

BINMODE #

Su sistemi non-POSIX, questa variabile specifica l’uso della modalità binaria per tutto l’I/O. I valori numerici di uno, due o tre specificano che i file in input, i file di output o tutti i file, rispettivamente, devono usare I/O binario. Un valore numerico inferiore a zero è trattato come zero e un valore numerico maggiore di tre è trattato come tre. Alternativamente, le stringhe "r" o "w" specificano che i file in input e i file in output, rispettivamente, devono usare I/O binario. Una stringa "rw" o "wr" indica che tutti i file devono usare I/O binario. Ogni altro valore di stringa è trattato come "rw", ma gawk genera un messaggio di avvertimento. BINMODE è descritto in maggior dettaglio in Usare gawk su sistemi operativi PC. mawk (vedi la sezione Altre implementazioni di awk liberamente disponibili) prevede questa variabile, ma consente solo valori numerici.

CONVFMT

Una stringa che controlla la conversione di numeri in stringhe (vedi la sezione Conversione di stringhe e numeri). In effetti è la stringa passata come primo argomento alla funzione sprintf() (vedi la sezione Funzioni di manipolazione di stringhe). Il suo valore di default è "%.6g". CONVFMT è stata introdotta dallo standard POSIX.

FIELDWIDTHS #

Una lista di posizioni di colonna, separate da spazi, per dire a gawk come dividere campi in input posti su colonne fisse. A partire dalla versione 4.2, ogni lunghezza di campo può essere opzionalmente preceduta da un valore, separato da due punti (:) che specifica il numero di caratteri da ignorare prima dell’inizio del campo. Assegnando un valore a FIELDWIDTHS, le variabili FS e FPAT non vengono usate per effettuare la divisione in campi. Vedi la sezione Leggere campi di larghezza costante per maggiori informazioni.

FPAT #

Un’espressione regolare (di tipo stringa) per dire a gawk di creare i campi utilizzando come delimitatore il testo che corrisponde all’espressione regolare. Assegnando un valore a FPAT le variabili FS e FIELDWIDTHS non vengono usate per effettuare la divisione in campi. Vedi la sezione Definire i campi in base al contenuto per maggiori informazioni.

FS

Il separatore dei campi in input (vedi la sezione Specificare come vengono separati i campi). Il valore può essere una stringa di un solo carattere o un’espressione regolare composta da più caratteri che individua il separatore tra i campi dei record in input. Se il suo valore è la stringa nulla (""), ogni singolo carattere del record costituisce un campo. (Questo comportamente è un’estensione gawk. POSIX awk non specifica il comportamento quando FS è la stringa nulla. Nonostante questo, alcune altre versioni di awk trattano "" in modo speciale.)

Il valore di default è " ", una stringa consistente in un singolo spazio. In via eccezionale, questo valore significa che qualsiasi sequenza di spazi, TAB, e/o ritorni a capo costituisce un solo separatore. Inoltre eventuali spazi, TAB e ritorni a capo all’inizio e alla fine del record in input vengono ignorati.

Si può impostare il valore di FS sulla riga dei comandi usando l’opzione -F:

awk -F, 'programma' file-in-input

Se gawk sta usando FIELDWIDTHS o FPAT per separare i campi, assegnare un valore a FS fa sì che gawk torni alla separazione dei campi normale, fatta utilizzando la variabile FS. Un modo semplice per fare questo è semplicemente quello di scrivere l’istruzione ‘FS = FS’, aggiungendo magari un commento esplicativo.

IGNORECASE #

Se la variabile IGNORECASE è diversa da zero o dalla stringa nulla, tutti i confronti tra stringhe e tutti i confronti tra espressioni regolari sono insensibili alle differenze maiuscolo/minuscolo. Questo vale per il confronto tra regexp usando ‘~’ e ‘!~’, per le funzioni gensub(), gsub(), index(), match(), patsplit(), split() e sub(), per la determinazione della fine record con RS e per la divisione in campi con FS e FPAT. Tuttavia, il valore di IGNORECASE non influenza gli indici dei vettori e non influenza la separazione dei campi qualora si usi un separatore di campo costituito da un unico carattere. Vedi la sezione Fare confronti ignorando maiuscolo/minuscolo.

LINT o

Quando questa variabile è vera (non uguale a zero e non uguale alla stringa nulla), gawk si comporta come se fosse stata specificata sulla riga di comando l’opzione --lint (vedi la sezione Opzioni sulla riga di comando). Con un valore di "fatal", gli avvertimenti di lint generano un errore fatale. Con un valore di "invalid", sono inviati solo gli avvertimenti per cose che sono effettivamente non valide. (Questa parte non funziona ancora perfettamente.) Ogni altro valore vero stampa avvertimenti non fatali. Se LINT ha per valore falso nessun avvertimento lint viene stampato.

Questa variabile è un’estensione gawk. Non ha un valore speciale per altre implementazioni di awk. A differenza di altre variabili speciali, modificare il valore di LINT altera la produzione di avvertimenti lint anche se gawk è in modalità compatibile. Analogamente a come le opzioni --lint e --traditional controllano in maniera indipendente diversi aspetti del comportamente di gawk, il controllo degli avvertimenti di lint durante l’esecuzione del programma è indipendente dall’implementazione awk in esecuzione.

OFMT

È questa la stringa che controlla la conversione di numeri in stringhe (vedi la sezione Conversione di stringhe e numeri) quando li si stampa con l’istruzione print. Funziona passandola come primo argomento alla funzione sprintf() (vedi la sezione Funzioni di manipolazione di stringhe). Il suo valore di default è "%.6g". Le prime versioni di awk usavano OFMT per specificare il formato da usare per convertire numeri in stringhe in espressioni generali; questo compito è ora svolto da CONVFMT.

OFS

È il separatore dei campi in output (vedi la sezione I separatori di output e come modificarli). È ciò che viene stampato in output per separare i campi stampati da un’istruzione print. Il suo valore di default è " ", una stringa costituita da un solo spazio.

ORS

Il separatore dei record in output. Viene stampato alla fine di ogni istruzione print. Il suo valore di default è "\n", il carattere di ritorno a capo. (Vedi la sezione I separatori di output e come modificarli.)

PREC #

La precisione disponibile nei numeri in virgola mobile a precisione arbitraria, per default 53 bit (vedi la sezione Impostare la precisione).

ROUNDMODE #

La modalità di arrotondamento da usare per operazioni aritmetiche a precisione arbitraria svolte sui numeri, per default "N" (roundTiesToEven nello standard IEEE 754; vedi la sezione Impostare la modalità di arrotondamento).

RS

Il separatore tra record in input. Il suo valore di default è una stringa contenente il solo carattere di ritorno a capo, il che significa che un record in input consiste di una sola riga di testo. Il suo valore può essere anche la stringa nulla, nel qual caso i record sono separati da una o più righe vuote. Se invece è una regexp, i record sono separati da corrispondenze alla regexp nel testo in input. (Vedi la sezione Controllare come i dati sono suddivisi in record.)

La possibilità che RS sia un’espressione regolare è un’estensione gawk. In molte altre implementazioni awk, oppure se gawk è in modalità compatibile (vedi la sezione Opzioni sulla riga di comando), è usato solo il primo carattere del valore di RS.

SUBSEP

Il separatore di indici. Ha il valore di default di "\034" ed è usato per separare le parti di cui sono composti gli indici di un vettore multidimensionale. Quindi, l’espressione ‘pippo["A", "B"]’ in realtà accede a pippo["A\034B"] (vedi la sezione Vettori multidimensionali).

TEXTDOMAIN #

Usata per l’internazionalizzazione di programmi a livello di awk. Imposta il dominio di testo (text domain) di default per costanti stringa marcate in maniera speciale nel codice sorgente, e anche per le funzioni dcgettext(), dcngettext() e bindtextdomain() (vedi la sezione Internazionalizzazione con gawk). Il valore di default di TEXTDOMAIN è "messages".


Successivo: , Su: Variabili predefinite   [Contenuti][Indice]