Successivo: Altri argomenti, Precedente: Riga di comando, Su: Invocare Gawk [Contenuti][Indice]
Le opzioni sono precedute da un trattino e consistono in un unico carattere. Le opzioni estese in stile GNU sono precedute da un doppio trattino e consistono in una parola chiave. La parola chiave può essere abbreviata, a condizione che l’abbreviazione identifichi univocamente l’opzione. Se l’opzione prevede un argomento, la parola chiave è immediatamente seguita da un segno di uguale (‘=’) e dal valore dell’argomento, oppure la parola chiave e il valore dell’argomento sono separati da spazio bianco (spazi o caratteri TAB). Se un’opzione con un valore viene immessa più di una volta, l’ultimo valore è quello che conta.
Ogni opzione estesa di gawk
ha una corrispondente opzione
breve in stile POSIX.
Le opzioni estese e brevi sono
intercambiabili in tutti i contesti.
L’elenco seguente descrive le opzioni richieste dallo standard POSIX:
-F fs
--field-separator fs
Imposta la variabile FS
a fs
(vedi la sezione Specificare come vengono separati i campi).
-f file-sorgente
--file file-sorgente
Legge il sorgente del programma awk
da file-sorgente
anziché prenderlo dal primo argomento che non è un’opzione.
Quest’opzione può essere data più volte; il programma awk
è formato dalla concatenazione del contenuto di ogni
file-sorgente specificato.
I file specificati dall’opzione -f sono considerati appartenere allo spazio-dei-nomi ‘"awk" (@namespace "awk")’ a inizio programma. Vedi la sezione Come cambiare lo spazio-dei-nomi, per ulteriori informazioni riguardo a questa funzionalità avanzata.
-v var=val
--assign var=val
Imposta la variabile var al valore val prima che inizi
l’esecuzione del programma. Tali valori di variabile sono disponibili
all’interno della regola BEGIN
(vedi la sezione Altri argomenti della riga di comando).
L’opzione -v può impostare una sola variabile per volta, ma può essere usata più di una volta, impostando ogni volta una variabile differente, in questo modo: ‘awk -v pippo=1 -v pluto=2 …’.
ATTENZIONE: Usare -v per impostare valori di variabili predefinite può condurre a risultati sorprendenti.
awk
reimposterà i valori di quelle variabili secondo le sue necessità, anche ignorando eventuali valori iniziali che possono essere stati assegnati.
-W gawk-opt
Fornisce un’opzione specifica dell’implementazione. Questa è la convenzione
POSIX per fornire opzioni specifiche dell’implementazione.
Queste opzioni
hanno anche una corrispondente opzione estesa scritta in stile GNU.
Si noti che le opzioni estese possono essere abbreviate, sempre che
le abbreviazioni siano univoche.
L’elenco completo delle opzioni specifiche di gawk
è riportato di
seguito.
--
Segnale della fine delle opzioni da riga di comando. I seguenti argomenti non sono trattati come opzioni anche se iniziano con ‘-’. Questa interpretazione di -- segue le convenzioni POSIX per l’analisi degli argomenti.
È utile se si hanno nomi-file che iniziano con ‘-’,
o negli script di shell, se si hanno nomi-file che devono essere
specificati dall’utente che potrebbero iniziare con ‘-’.
È utile anche per passare opzioni al programma awk
;
si veda Elaborare opzioni specificate sulla riga di comando.
L’elenco che segue descrive le opzioni specifiche di gawk
:
Fa sì che gawk
tratti tutti i dati in input come caratteri di un solo
byte. In aggiunta, tutto l’output scritto con print
o printf
viene trattato come composto da caratteri contenuti in un solo byte.
Normalmente, gawk
segue lo standard POSIX e cerca di elaborare i suoi
dati di input in accordo con la localizzazione corrente
(vedi la sezione Il luogo fa la differenza).
Questo spesso può comportare la conversione di caratteri multibyte in
caratteri estesi (internamente), e può
creare problemi o confusione se i dati di input non contengono caratteri
multibyte validi. Quest’opzione è una maniera facile di dire a gawk
:
“Giù le mani dai miei dati!”.
Specifica la modalità di compatibilità, nella quale le estensioni GNU al
linguaggio awk
sono disabilitate; in questo modo gawk
si
comporta proprio come la versione di BWK awk
.
Vedi la sezione Estensioni di gawk
non in POSIX awk
,
che riassume le estensioni.
Si veda anche
Compatibilità all’indietro e debug.
Stampa la versione ridotta della General Public License ed esce.
=
file]Stampa una lista ordinata di variabili globali, i loro tipi, e i valori finali in file. Se non viene fornito alcun file, stampa questa lista in un file chiamato awkvars.out nella directory corrente. Non sono consentiti spazi tra -d e file, se file viene specificato.
Avere una lista di tutte le variabili globali è un buon modo per cercare
refusi nei propri programmi.
Si può usare quest’opzione anche se si ha un grosso programma con tantissime
funzioni, e si vuol essere sicuri che le funzioni non usino
inavvertitamente variabili globali che sarebbero dovute essere locali
(questo è un errore particolarmente facile da fare con nomi di variabile
semplici come i
, j
, etc.).
=
file]Abilita l’esecuzione del debug di programmi awk
(vedi la sezione Introduzione al debugger di gawk
).
Per default, il debugger legge i comandi interattivamente dalla tastiera
(standard input).
L’argomento opzionale file consente di specificare un file con una lista
di comandi per il debugger da eseguire in maniera non interattiva.
Non sono consentiti spazi tra -D e file, se
file viene indicato.
Fornisce del codice sorgente nel testo-del-programma.
Quest’opzione consente di combinare il codice sorgente contenuto in file
col codice sorgente immesso sulla riga di comando.
Questo è particolarmente utile quando si hanno funzioni di libreria che si
vogliono usare dai programmi da riga di comando
(vedi la sezione Ricerca di programmi awk
in una lista di directory.).
Si noti che gawk
elabora ogni stringa come se fosse terminata
da un carattere di ritorno a capo (anche se non è questo il caso).
Ciò facilita la costruzione del programma completo.
ATTENZIONE: Prima della versione 5.0, non era necessario che ogni testo-di-programma costituisse un’unità sintattica completa. P.es., il codice che segue funzionava:
$ gawk -e 'BEGIN { a = 5 ;' -e 'print a }' -| 5Comunque ciò non è più possibile. Se c’è qualche script che utilizza tale possibilità, è necessario modificarlo.
Il motivo di ciò è che ogni testo-di-programma è considerato appartenere allo spazio di nomi ‘"awk" (@namespace "awk")’ a inizio programma. Vedi la sezione Come cambiare lo spazio-dei-nomi, per ulteriori informazioni.
Simile a -f, legge il testo del programma awk
da
file. Ci sono due differenze rispetto a -f:
awk
.
Quest’opzione è particolarmente necessaria per le applicazioni World Wide Web
CGI che passano argomenti attraverso le URL; l’uso di quest’opzione impedisce
a un utente malintenzionato (o ad altri) di passare opzioni, assegnamenti o
codice sorgente awk
(con -e) all’applicazione
CGI.11
Quest’opzione dovrebbe essere usata
con script ‘#!’
(vedi la sezione Programmi awk
da eseguire come script), in questo modo:
#! /usr/local/bin/gawk -E il programma awk è qui …
Analizza il programma sorgente e
genera un file GNU gettext
portable object template sullo
standard output per tutte le costanti di tipo stringa che sono state marcate
come da tradurre.
Vedi la sezione Internazionalizzazione con gawk
,
per informazioni su quest’opzione.
Stampa un messaggio sull’“uso” riassumendo le opzioni brevi ed estese
accettate da gawk
ed esce.
Legge una libreria di sorgenti awk
da file-sorgente.
Quest’opzione è del tutto equivalente a usare la direttiva @include
all’interno del proprio programma. È molto simile all’opzione
-f, ma ci sono due differenze importanti. Primo, quando viene usata
l’opzione -i, il sorgente del programma non viene caricato se è
stato caricato in precedenza, mentre con -f, gawk
carica
sempre il file. Secondo, poiché quest’opzione è pensata per essere usata
con librerie di codice, gawk
non riconosce tali file come
costituenti l’input del programma principale. Così, dopo l’elaborazione di
un argomento -i, gawk
si aspetta di trovare il codice
sorgente principale attraverso l’opzione -f o sulla riga di comando.
I file specificati dall’opzione -i sono considerati appartenere allo spazio-dei-nomi ‘"awk" (@namespace "awk")’ a inizio programma. Vedi la sezione Come cambiare lo spazio-dei-nomi, per ulteriori informazioni.
Carica un’estensione dinamica denominata ext. Le estensioni sono
memorizzate come librerie condivise di sistema.
Quest’opzione ricerca la libreria usando la variabile d’ambiente
AWKLIBPATH
. Il suffisso corretto per la piattaforma in uso verrà
fornito per default, perciò non è necessario specificarlo nel nome
dell’estensione. La routine di inizializzazione dell’estensione dovrebbe
essere denominata dl_load()
. Un’alternativa è quella di usare la
direttiva @load
all’interno del programma per caricare una libreria
condivisa. Questa funzionalità avanzata è descritta in dettaglio in
Scrivere estensioni per gawk
.
=
valore]Emette messaggi d’avvertimento relativi a costrutti dubbi o non portabili ad
altre implementazioni di awk
.
Non sono consentiti spazi tra -L e valore, se
viene indicato il valore.
Alcuni avvertimenti vengono emessi quando gawk
legge preliminarmente
il programma. Altri vengono emessi quando il programma viene eseguito.
L’argomento opzionale può essere uno dei seguenti:
fatal
Richiede che gli avvertimenti di lint siano considerati errori gravi.
Potrebbe essere una misura drastica, però il
suo uso incoraggerà certamente lo sviluppo di programmi awk
più
corretti.
invalid
Vengono emessi solo gli avvertimenti relativi a quello che è effettivamente non valido (funzionalità non ancora completamente implementata).
no-ext
Gli avvertimenti relativi alle estensioni gawk
sono disabilitati.
Alcuni avvertimenti vengono stampati solo una volta, anche se i costrutti dubbi
per i quali vengono emessi avvisi ricorrono diverse volte nel programma
awk
. Perciò, nell’eliminazione dei problemi rilevati da
--lint, bisogna porre attenzione a cercare tutte le occorrenze di ogni
costrutto inappropriato. Siccome i programmi awk
generalmente sono
brevi, questa non è un’operazione gravosa.
Chiede il calcolo con precisione arbitraria sui numeri. Quest’opzione non ha
alcun effetto se gawk
non è compilato per l’uso delle librerie GNU
MPFR e MP
(vedi la sezione Calcolo con precisione arbitraria con gawk
).
Abilita l’interpretazione automatica di valori ottali ed esadecimali nei dati di input (vedi la sezione Consentire dati di input non decimali).
ATTENZIONE: Quest’opzione può generare gravi malfunzionamenti nei vecchi programmi. Usare con cautela. Si noti anche che quest’opzione potrebbe non essere più disponibile in una futura versione di
gawk
.
Forza l’uso del carattere di separazione decimale della localizzazione quando analizza i dati in input (vedi la sezione Il luogo fa la differenza).
=
file]Consente la stampa di una versione formattata elegantemente dei programmi
awk
. Implica l’opzione --no-optimize.
Per default il programma di output viene creato in un file
chiamato awkprof.out (vedi la sezione Profilare i propri programmi awk
).
L’argomento opzionale file consente di specificare un
nome-file differente per l’output.
Non sono consentiti spazi tra -o e file, se
file viene indicato.
NOTA: Nel passato, quest’opzione eseguiva anche il programma. Ora non è più così.
Abilita le ottimizzazioni di default nella rappresentazione interna del programma. Attualmente, questo comprende solo delle semplificazioni nell’uso di costanti.
Quest’ottimizzazione è abilitata per default. Quest’opzione rimane disponibile per compatibilità all’indietro. Tuttavia può essere usata per annullare l’effetto di una precedente opzione -s (si veda più sotto in questa lista).
=
file]Abilita la creazione del profilo di esecuzione di programmi awk
(vedi la sezione Profilare i propri programmi awk
).
Implicitamente viene forzata l’opzione --no-optimize.
Per default, i profili vengono creati in un file chiamato awkprof.out.
L’argomento opzionale file consente di specificare un altro
nome-file per il file del profilo.
Non sono consentiti spazi tra -p e file, se
viene indicato un file.
Il profilo contiene il numero di esecuzioni di ogni istruzione sul margine sinistro e il conteggio delle chiamate di funzione per ogni funzione.
Opera in modalità POSIX rigorosa. Disabilita tutte le estensioni di
gawk
(proprio come --traditional) e
disabilita tutte le estensioni non consentite da POSIX.
Vedi la sezione Sommario Estensioni Comuni, per un sommario delle estensioni
di gawk
che sono disabilitate da quest’opzione.
Inoltre,
vengono applicate le seguenti
restrizioni:
FS
a un singolo carattere TAB
(vedi la sezione Specificare come vengono separati i campi).
Se si forniscono entrambe le opzioni --traditional e --posix
sulla riga di comando, --posix ha la precedenza. Se vengono fornite
entrambe le opzioni gawk
emette un avviso.
Consente le espressioni di intervallo
(vedi la sezione Operatori di espressioni regolari)
nelle espressioni regolari.
Questo è ora il comportamento di default di gawk
.
Tuttavia, quest’opzione rimane (sia per retrocompatibilità
che per l’uso in combinazione con --traditional).
Disabilita le opzioni di ottimizzazione di default di gawk
effettuate sulla rappresentazione interna del programma.
Disabilita la funzione system()
,
la ridirezione dell’input con getline
,
la ridirezione dell’output con print
e printf
,
e le estensioni dinamiche.
Inoltre, non consente di aggiungere nomi di file ad ARGV
che
non siano già presenti all’inizio dell’esecuzione di gawk
.
È particolarmente utile quando si vogliono eseguire script awk
da sorgenti dubbie e si vuol essere ricuri che gli script non abbiano
accesso al sistema (oltre ai file-dati di input specificati).
Avvisa su costrutti che non sono disponibili nella versione originale di
awk
dalla versione 7 di Unix
(vedi la sezione Differenze importanti tra V7 e System V Release 3.1).
Stampa informazioni sulla versione di questa specifica copia di gawk
.
Consente di determinare se la copia di gawk
in uso è aggiornata
rispetto a quello che è attualmente in distribuzione da parte della Free
Software Foundation.
È utile anche per la segnalazione di bug
(vedi la sezione Segnalazione di problemi e bug).
--
Marca la fine di tutte le opzioni.
Ogni argomento sulla riga di comando che segue --
viene messo
nel vettore ARGV
, anche se inizia con il segno meno (-
).
Ogni altra opzione, se è stato specificato il testo di un programma è contrassegnata come non valida con un messaggio di avvertimento, altrimenti è ignorata.
In modalità di compatibilità, come caso particolare, se il valore di fs
fornito all’opzione -F è ‘t’, FS
è impostata al carattere
TAB ("\t"
). Questo è vero solo per --traditional e non
per --posix
(vedi la sezione Specificare come vengono separati i campi).
L’opzione -f può essere usata più di una volta nella riga di comando.
In questo caso, awk
legge il sorgente del suo programma da tutti i
file indicati, come se fossere concatenati assieme a formare un unico grande
file.
Questo è utile per creare librerie di funzioni di awk
. Queste
funzioni possono venir scritte una volta e in seguito recuperate da una
posizione standard, invece di doverle includere in ogni singolo programma.
L’opzione -i è simile in questo senso.
(Come indicato in
Come scrivere definizioni e cosa significano,
i nomi di funzione devono essere univoci).
Con awk
standard, le funzioni di libreria si possono ancora usare,
anche se il programma è immesso dalla tastiera,
specificando ‘-f /dev/tty’. Dopo aver scritto il programma,
premere Ctrl-d (il carattere di fine file) per terminarlo.
(Si potrebbe anche usare ‘-f -’ per leggere il sorgente del programma
dallo standard input, ma poi non si potrà usare lo standard input come sorgente
di dati).
Siccome è scomodo usare il meccanismo di awk
standard per combinare
file sorgenti e programmi awk
da riga di comando, gawk
fornisce l’opzione -e. Questo non richiede di evitare l’uso dello
standard input per immettere codice sorgente, e consente di combinare
facilmente codice sorgente da riga di comando e da libreria
(vedi la sezione Ricerca di programmi awk
in una lista di directory.).
Come per -f, le opzioni -e e -i
si possono usare più volte nella riga di comando.
Se non sono specificate le opzioni -f o -e,
gawk
usa il primo argomento diverso da un’opzione,
presente sulla riga di comando, come testo del codice sorgente
del programma. Gli argomenti sulla riga di comando che si trovano
dopo il testo del programma sono inseriti nel vettore ARGV
;
awk
non continua ad analizzare la riga di comando
alla ricerca di ulteriori opzioni.
Se la variabile d’ambiente POSIXLY_CORRECT
esiste,
gawk
si comporta in modalità POSIX rigorosa, esattamente come se
fosse stata fornita l’opzione --posix.
Molti programi GNU cercano questa variabile d’ambiente per eliminare
estensioni che confliggono con POSIX, ma gawk
si comporta in modo
diverso: sopprime tutte le estensioni, anche quelle che non confliggono con
POSIX, e funziona rigorosamente in modalità POSIX.
Se viene fornita l’opzione --lint sulla riga di comando e
gawk
passa alla modalità POSIX a causa di POSIXLY_CORRECT
,
viene emesso un messaggio di avvertimento indicando che è attiva la
modalità POSIX. Normalmente questa variabile si imposta nel file di avvio
della shell a livello utente.
Per una shell compatibile con Bourne (come Bash), queste righe andranno
aggiunte nel file .profile della directory "home" dell’utente:
POSIXLY_CORRECT=true export POSIXLY_CORRECT
Per una shell compatibile con C,12 questa riga andrà aggiunta nel file .login nella directory "home" dell’utente:
setenv POSIXLY_CORRECT true
Avere POSIXLY_CORRECT
impostata non è raccomandato per l’uso quotidiano,
ma è utile per provare la portabilità dei programmi su altri
ambienti.
Per maggiori dettagli,
si veda la Sezione 4.4 di RFC 3875. Si veda anche
note esplicative spedite alla mailing list gawk
bug.
Non raccomandato.
Successivo: Altri argomenti, Precedente: Riga di comando, Su: Invocare Gawk [Contenuti][Indice]