Successivo: Variabili auto-assegnate, Su: Variabili predefinite [Contenuti][Indice]
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: Variabili auto-assegnate, Su: Variabili predefinite [Contenuti][Indice]