"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "doc/it/gawk.1" between
gawk-5.0.1.tar.xz and gawk-5.1.0.tar.xz

About: GNU awk - pattern scanning and processing language.

gawk.1  (gawk-5.0.1.tar.xz):gawk.1  (gawk-5.1.0.tar.xz)
skipping to change at line 19 skipping to change at line 19
gawk [ opzioni in stile POSIX o GNU ] [ -- ] testo del programma file ... gawk [ opzioni in stile POSIX o GNU ] [ -- ] testo del programma file ...
DESCRIZIONE DESCRIZIONE
Gawk � l'implementazione nell'ambito del Progetto GNU del linguaggio di p rogrammazione AWK . Si attiene Gawk � l'implementazione nell'ambito del Progetto GNU del linguaggio di p rogrammazione AWK . Si attiene
alla definizione del linguaggio descritta nello standard POSIX 1003.1. Q uesta versione � basata a sua alla definizione del linguaggio descritta nello standard POSIX 1003.1. Q uesta versione � basata a sua
volta sulla descrizione contenuta in The AWK Programming Language, di Aho , Kernighan e Weinberger. Gawk volta sulla descrizione contenuta in The AWK Programming Language, di Aho , Kernighan e Weinberger. Gawk
fornisce le funzionalit� aggiuntive presenti nella versione corrente di a wk fornisce le funzionalit� aggiuntive presenti nella versione corrente di a wk
di Brian Kernighan e numerose estensioni specifiche di GNU. di Brian Kernighan e numerose estensioni specifiche di GNU.
La riga di comando contiene opzioni per gawk stesso, il testo del program ma AWK (se non � stato fornito La riga di comando contiene opzioni per gawk stesso, il testo del program ma AWK (se non � stato fornito
con le opzioni -f o -i), e valori da rendere disponibili nelle variabili con le opzioni -f o --include ), e valori da rendere disponibili nelle v
AWK predefinite ARGC e ARGV. ariabili AWK predefinite ARGC e
ARGV .
Quando gawk � invocato con l'opzione --profile, inizia a raccogliere st Quando gawk � invocato con l'opzione --profile , inizia a raccogliere sta
atistiche sul comportamento del tistiche sul comportamento del
programma durante l'esecuzione. Gawk in questa modalit� � pi� lento, e p programma durante l'esecuzione. Gawk in questa modalit� � pi� lento, e
roduce automaticamente un pro- produce automaticamente un pro-
filo di esecuzione nel file awkprof.out alla fine dell'esecuzione. filo di esecuzione nel file awkprof.out alla fine dell'esecuzione. Si
Si veda l'opzione --profile pi� veda l'opzione --profile pi�
avanti. avanti.
Gawk ha anche una capacit� integrata di debugging. Una sessione interatt Gawk ha anche una capacit� integrata di debugging. Una sessione inte
iva di analisi degli errori rattiva di analisi degli errori
(debug) pu� essere iniziata fornendo l'opzione --debug sulla riga di (debug) pu� essere iniziata fornendo l'opzione --debug sulla riga di coma
comando. In questa modalit� di ndo. In questa modalit� di
esecuzione, gawk carica il codice sorgente di AWK e poi richiede l'inser esecuzione, gawk carica il codice sorgente di AWK e poi richiede l'i
imento di comandi di debug. nserimento di comandi di debug.
Gawk pu� analizzare solo il sorgente di un programma AWK fornito trami Gawk pu� analizzare solo il sorgente di un programma AWK fornito tramite
te l'opzione -f. Il debugger � l'opzione -f e --include . Il
documentato in GAWK: Effective AWK Programming. debugger � documentato in GAWK: Effective AWK Programming.
FORMATO DELLE OPZIONI FORMATO DELLE OPZIONI
Le opzioni di Gawk possono essere sia nella tradizionale forma a una lett Le opzioni di Gawk possono essere sia nella tradizionale forma a una le
era di POSIX, sia nella forma ttera di POSIX, sia nella forma
estesa tipica di GNU. Le opzioni POSIX cominciano con un “-” singolo, q estesa tipica di GNU. Le opzioni POSIX cominciano con un “-” singolo, qu
uelle in forma lunga cominciano elle in forma lunga cominciano
con “--”. Sono disponibili opzioni in forma lunga sia per le funzionalit con “--”. Sono disponibili opzioni in forma lunga sia per le funziona
specifiche di GNU, sia per lit� specifiche di GNU, sia per
quelle previste da POSIX. quelle previste da POSIX.
Le opzioni specifiche di Gawk sono usate normalmente nella forma lunga. Gli argomenti delle opzioni in Le opzioni specifiche di Gawk sono usate normalmente nella forma lunga. Gli argomenti delle opzioni in
forma lunga possono essere uniti ad esse da un segno =, senza spazi, oppu re sono indicati nel successivo forma lunga possono essere uniti ad esse da un segno =, senza spazi, oppu re sono indicati nel successivo
argomento della riga di comando. Le opzioni lunghe possono essere ab breviate, sempre che l'abbrevi- argomento della riga di comando. Le opzioni lunghe possono essere abbre viate, sempre che l'abbrevi-
azione rimanga univoca. azione rimanga univoca.
In aggiunta, ogni opzione lunga ha una corrispondente opzione corta, in modo che la funzionalit� In aggiunta, ogni opzione lunga ha una corrispondente opzione cor ta, in modo che la funzionalit�
dell'opzione possa essere usata all'interno di script #! eseguibili. dell'opzione possa essere usata all'interno di script #! eseguibili.
OPZIONI OPZIONI
Gawk accetta le seguenti opzioni. Le opzioni standard sono elencate p er prime, seguite dalle opzioni Gawk accetta le seguenti opzioni. Le opzioni standard sono elencate per prime, seguite dalle opzioni
per le estensioni gawk, elencate nell'ordine alfabetico delle opzioni cor te. per le estensioni gawk, elencate nell'ordine alfabetico delle opzioni cor te.
-f file_di_programma -f file_di_programma
--file file_di_programma --file file_di_programma
Legge il sorgente del programma AWK dal file file_di_programma, in Legge il sorgente del programma AWK dal file file_di_programma,
vece che dal primo argomento invece che dal primo argomento
della riga di comando. Si possono specificare pi� opzioni -f (o - della riga di comando. Si possono specificare pi� opzioni -f (o
-file). --file). I file letti come
specificato da -f sono trattati come se iniziassero con la diretti
va implicita @namespace "awk".
-F fs -F fs
--separatore_di_campo fs --separatore_di_campo fs
Usa fs come separatore di campo in input (il valore della variabil e predefinita FS). Usa fs come separatore di campo in input (il valore della variabil e predefinita FS).
-v var=val -v var=val
--assign var=val --assign var=val
Assegna il valore val alla variabile var, prima che inizi l'es ecuzione del programma. Questi Assegna il valore val alla variabile var, prima che inizi l'es ecuzione del programma. Questi
valori delle variabili sono messi a disposizione della regola BEGI N di un programma AWK. valori delle variabili sono messi a disposizione della regola BEGI N di un programma AWK.
skipping to change at line 102 skipping to change at line 104
--debug[=file] --debug[=file]
Abilita il debugging di programmi AWK. Per default, l'analizzator e di errori [debugger] legge i Abilita il debugging di programmi AWK. Per default, l'analizzator e di errori [debugger] legge i
comandi in maniera interattiva dalla tastiera (standard inpu t). L'argomento opzionale file comandi in maniera interattiva dalla tastiera (standard inpu t). L'argomento opzionale file
specifica un file contenente un elenco di comandi per il debugger da eseguire in maniera non specifica un file contenente un elenco di comandi per il debugger da eseguire in maniera non
interattiva. interattiva.
-e testo_del_programma -e testo_del_programma
--source testo_del_programma --source testo_del_programma
Usa testo_del_programma come codice sorgente del programma AWK. Quest'opzione permette di com- Usa testo_del_programma come codice sorgente del programma AWK. Quest'opzione permette di com-
binare in modo semplice funzioni di libreria (usate attraverso i f ile indicati dalle opzioni -f e binare in modo semplice funzioni di libreria (usate attraverso i f ile indicati dalle opzioni -f e
-i) con codice sorgente immesso sulla riga di comando. � rivolta --include ) con codice sorgente immesso sulla riga di comando.
principalmente a programmi AWK � rivolta principalmente a pro-
di media e grande dimensione usati all'interno di script di shell. grammi AWK di media e grande dimensione usati all'interno di scri
pt di shell. Ogni argomento
specificato da -e � trattato come se iniziasse con la direttiva im
plicita @namespace "awk".
-E file -E file
--exec file --exec file
Simile a -f, comunque, quest'opzione � l'ultima ad essere elaborat Simile a -f, comunque, quest'opzione � l'ultima ad essere elabor
a. Dovrebbe essere usata con ata. Dovrebbe essere usata con
script #!, specialmente per applicazioni CGI [Common Gateway Int script #!, specialmente per applicazioni CGI [Common Gateway Inter
erface], per evitare di passare face], per evitare di passare
opzioni o codice (!) sulla riga di comando da un URL. Quest'opzio opzioni o codice (!) sulla riga di comando da un URL. Quest'opzi
ne disabilita gli assegnamenti one disabilita gli assegnamenti
di variabile da riga di comando. di variabile da riga di comando.
-g -g
--gen-pot --gen-pot
Esamina e analizza il programma AWK, e genera un file in formato Esamina e analizza il programma AWK, e genera un file in formato G
GNU .pot (Portable Object Tem- NU .pot (Portable Object Tem-
plate) sullo standard output con elementi relativi a tutte le str plate) sullo standard output con elementi relativi a tutte le
inghe localizzabili nel pro- stringhe localizzabili nel pro-
gramma. Il programma in s� non viene eseguito. Si veda la dis gramma. Il programma in s� non viene eseguito. Si veda la distri
tribuzione GNU gettext per mag- buzione GNU gettext per mag-
giori informazioni sui file .pot. giori informazioni sui file .pot .
-h -h
--help Scrive sullo standard output un riassunto abbastanza breve delle o pzioni disponibili. (In linea --help Scrive sullo standard output un riassunto abbastanza breve delle opzioni disponibili. (In linea
con le convenzioni di codifica GNU Coding Standards, queste opzion i provocano un'uscita immediata con le convenzioni di codifica GNU Coding Standards, queste opzion i provocano un'uscita immediata
e senza segnalazione di errore. e senza segnalazione di errore.
-i include-file -i include-file
--include include-file --include include-file
Carica una libreria di sorgenti awk. Cerca la libreria usando la Carica una libreria di sorgenti awk. Cerca la libreria usando l
variabile d'ambiente AWKPATH. a variabile d'ambiente AWKPATH.
Se la ricerca iniziale non va a buon fine, viene fatto un altro Se la ricerca iniziale non va a buon fine, viene fatto un altro te
tentativo dopo aver aggiunto il ntativo dopo aver aggiunto il
suffisso .awk. Il file verr� caricato solo una volta (cio� vengon suffisso .awk . Il file verr� caricato solo una volta (cio� veng
o ignorati i duplicati), e il ono ignorati i duplicati), e il
codice non costituisce il sorgente del programma principale. codice non costituisce il sorgente del programma principale. I fi
le letti come specificato da
--include sono trattati come se iniziassero con la direttiva impli
cita @namespace "awk".
-l lib -l lib
--load lib --load lib
Carica un'estensione gawk dalla libreria condivisa lib. Cerca la libreria usando la variabile Carica un'estensione gawk dalla libreria condivisa lib. Cerca la libreria usando la variabile
d'ambiente AWKLIBPATH. Se la ricerca iniziale non va a buon fine, d'ambiente AWKLIBPATH . Se la ricerca iniziale non va a buon fine
viene fatto un altro tentativo , viene fatto un altro tenta-
dopo aver aggiunto il suffisso della libreria condivisa predefini tivo dopo aver aggiunto il suffisso della libreria condivisa pred
ta per la piattaforma. La pro- efinita per la piattaforma. La
cedura di inizializzazione della libreria si suppone avere come no procedura di inizializzazione della libreria si suppone avere come
me dl_load(). nome dl_load().
-L [valore] -L [valore]
--lint[=valore] --lint[=valore]
Emette messaggi d'avvertimento relativi a costrutti dubbi o non portabili su altre implemen- Emette messaggi d'avvertimento relativi a costrutti dubbi o non portabili su altre implemen-
tazioni di AWK. Con l'argomento opzionale fatal, gli avvertim enti lint sono considerati come tazioni di AWK. Con l'argomento opzionale fatal, gli avvertim enti lint sono considerati come
errori fatali. Questo pu� essere drastico, ma incoragger� sicuram ente lo sviluppo di programmi errori fatali. Questo pu� essere drastico, ma incoragger� sicuram ente lo sviluppo di programmi
AWK pi� corretti. Con l'argomento opzionale invalid, vengono eme ssi solo gli avvertimenti rela- AWK pi� corretti. Con l'argomento opzionale invalid, vengono eme ssi solo gli avvertimenti rela-
tivi a quello che � effettivamente non valido (funzionalit� non a ncora completamente implemen- tivi a quello che � effettivamente non valido (funzionalit� non a ncora completamente implemen-
tata). tata). Specificando l'argomento facoltativo no-ext, gli avvert
imenti riguardo alle estensioni
gawk sono disabilitati.
-M -M
--bignum --bignum
Forza il calcolo con precisione arbitraria sui numeri. Quest'opz Forza il calcolo con precisione arbitraria sui numeri. Quest'opzi
ione non ha effetto se gawk non one non ha effetto se gawk non
� compilato per l'uso delle librerie GNU MPFR e MP. (In tal caso, � compilato per utilizzare le librerie GNU MPFR e GMP. (In tal c
gawk invia un messaggio di aso, gawk invia un messaggio di
avvertimento.) avvertimento.)
-n -n
--non-decimal-data --non-decimal-data
Riconosce valori ottali ed esadecimali nei dati in input. Usare q uest'opzione con molta cautela! Riconosce valori ottali ed esadecimali nei dati in input. Usare q uest'opzione con molta cautela!
-N -N
--use-lc-numeric --use-lc-numeric
Forza gawk a usare il carattere di separazione decimale della l Forza gawk a usare il carattere di separazione decimale della loca
ocalizzazione quando analizza i lizzazione quando analizza i
dati in input. Sebbene lo standard POSIX richieda questo comporta dati in input. Sebbene lo standard POSIX richieda questo comp
mento, e gawk faccia questo ortamento, e gawk faccia questo
quando l'opzione --posix � attiva, il comportamento predefinito � quello tradizionale di usare il quando l'opzione --posix � attiva, il comportamento predefinito � quello tradizionale di usare il
punto come separatore decimale, anche per le localizzazioni in cui punto come separatore decimale, anche per le localizzazioni in
il carattere di separazione cui il carattere di separazione
non � il punto. Quest'opzione ignora il comportamento predefin non � il punto. Quest'opzione ignora il comportamento predefinito
ito, senza il rigore draconiano , senza il rigore draconiano
dell'opzione --posix. dell'opzione --posix .
-o[file] -o[file]
--pretty-print[=file] --pretty-print[=file]
Stampa una versione formattata graziosamente del programma su file Stampa una versione formattata graziosamente del programma su
. Se non viene indicato un file. Se non viene indicato un
file, gawk usa un file di nome awkprof.out nella directory corrent file, gawk usa un file di nome awkprof.out nella directory corrent
e. Sottintende --no-optimize. e. Quest'opzione attiva anche
l'opzione --no-optimize.
-O -O
--optimize --optimize
Abilita le ottimizzazioni predefinite di gawk nella rapprese ntazione interna del programma. Abilita le ottimizzazioni predefinite di gawk nella rapprese ntazione interna del programma.
Attualmente, questo comprende il semplice calcolo delle costanti. Quest'opzione � attiva in modo Attualmente, questo comprende il semplice calcolo delle costanti. Quest'opzione � attiva in modo
predefinito. predefinito.
-p[prof-file] -p[prof-file]
--profile[=prof-file] --profile[=prof-file]
Inizia una sessione di "profiling", e invia i dati tracciati al file prof-file. Quello pre- Inizia una sessione di "profiling", e invia i dati tracciati al file prof-file. Quello pre-
definito � awkprof.out. Il profilo contiene il numero di esecuz ioni di ogni istruzione sul definito � awkprof.out. Il profilo contiene il numero di esecuz ioni di ogni istruzione sul
margine sinistro e il conteggio delle chiamate di funzione per ogni funzione definita margine sinistro e il conteggio delle chiamate di funzione per ogni funzione definita
dall'utente. Sottindende --no-optimize. dall'utente. Quest'opzione attiva anche l'opzione --no-optimize.
-P -P
--posix --posix
Quest'opzione attiva la modalit� di compatibilit�, con le seguenti restrizioni aggiuntive: Quest'opzione attiva la modalit� di compatibilit� , con le seguent i restrizioni aggiuntive:
· Le sequenze di protezione \x non vengono riconosciute. · Le sequenze di protezione \x non vengono riconosciute.
· Non � possibile continuare le righe dopo ? e :. · Non � possibile continuare le righe dopo ? e :.
· Non viene riconosciuto il sinonimo func per la parola chiave fun ction. · Non viene riconosciuto il sinonimo func per la parola chiave fun ction .
· Non si possono usare gli operatori ** e **= al posto di ^ e ^=. · Non si possono usare gli operatori ** e **= al posto di ^ e ^=.
-r -r
--re-interval --re-interval
Abilita l'uso di espressioni di intervallo nelle espressioni regol ari (vedere Espressioni rego- Abilita l'uso di espressioni di intervallo nelle espressioni regol ari (vedere Espressioni rego-
lari, pi� avanti). Nel linguaggio AWK le espressioni di interva llo non sono mai state disponi- lari, pi� avanti). Nel linguaggio AWK le espressioni di interva llo non sono mai state disponi-
bili. Lo standard POSIX le ha aggiunte, per rendere awk ed egrep coerenti tra di loro. Sono bili. Lo standard POSIX le ha aggiunte, per rendere awk ed egrep coerenti tra di loro. Sono
abilitate in modalit� predefinita, per� quest'opzione rimane per essere usata con l'opzione abilitate in modalit� predefinita, per� quest'opzione rimane per e ssere usata insieme all'opzione
--traditional. --traditional.
-s -s
--no-optimize --no-optimize
Disabilita le ottimizzazioni predefinite di gawk nella rappresenta zione interna del programma. Disabilita le ottimizzazioni predefinite di gawk nella rappresenta zione interna del programma.
-S -S
--sandbox --sandbox
Esegue gawk in modalit� "sandbox", disabilitando la funzione syste m(), la ridirezione dell'input Esegue gawk in modalit� "sandbox", disabilitando la funzione syste m(), la ridirezione dell'input
con getline, la ridirezione sull'output con print e printf, e il caricamento delle estensioni con getline, la ridirezione sull'output con print e printf, e il caricamento delle estensioni
skipping to change at line 238 skipping to change at line 244
-- Segnala la fine delle opzioni. � utile perch� permette di pas sare al programma AWK ulteriori -- Segnala la fine delle opzioni. � utile perch� permette di pas sare al programma AWK ulteriori
argomenti [nomi di file] che iniziano con “-”. Questo assicura un a coerenza con le convenzioni argomenti [nomi di file] che iniziano con “-”. Questo assicura un a coerenza con le convenzioni
di esame degli argomenti usato dalla maggior parte dei programmi P OSIX . di esame degli argomenti usato dalla maggior parte dei programmi P OSIX .
In modalit� compatibile, qualsiasi altra opzione � contrassegnata co me non valida e viene ignorata. In modalit� compatibile, qualsiasi altra opzione � contrassegnata co me non valida e viene ignorata.
Nell'uso normale, sempre che sia stato fornito il testo del programma, le opzioni sconosciute sono pas- Nell'uso normale, sempre che sia stato fornito il testo del programma, le opzioni sconosciute sono pas-
sate al programma AWK nel vettore ARGV per l'elaborazione. Questo � par ticolarmente utile per eseguire sate al programma AWK nel vettore ARGV per l'elaborazione. Questo � par ticolarmente utile per eseguire
i programmi AWK attraverso il meccanismo dell'interprete eseguibile #!. i programmi AWK attraverso il meccanismo dell'interprete eseguibile #!.
Per compatibilit� con POSIX, si pu� usare l'opzione -W, seguita dal nome di un'opzione lunga. Per compatibilit� con POSIX, si pu� usare l'opzione -W , seguita dal nome di un'opzione lunga.
ESECUZIONE DEL PROGRAMMA AWK ESECUZIONE DEL PROGRAMMA AWK
Un programma AWK consiste di una sequenza di direttive opzionali, istruzi oni di tipo criterio-azione e Un programma AWK consiste di una sequenza di direttive opzionali, istruzi oni di tipo criterio-azione e
definizioni di funzione opzionali. definizioni di funzione opzionali.
@include "nome_del_file" @include "nome_del_file"
@load "nome_del_file" @load "nome_del_file"
@namespace "nome"
criterio di ricerca { istruzioni di azione } criterio di ricerca { istruzioni di azione }
function nome(lista di parametri) { istruzioni } function nome(lista di parametri) { istruzioni }
Gawk prima legge il codice del programma dal/dai file_di_programma se specificato/i, dagli argomenti Gawk prima legge il codice del programma dal/dai file_di_programma se specificato/i, dagli argomenti
passati a --source, o dal primo argomento sulla riga di comando che non s ia un'opzione. Le opzioni -f e passati a --source, o dal primo argomento sulla riga di comando che non s ia un'opzione. Le opzioni -f e
--source possono essere usate pi� volte nella riga di comando. Gawk le gge il testo del programma come --source possono essere usate pi� volte nella riga di comando. Gawk le gge il testo del programma come
se tutti i file_di_programma e i testi sorgenti della riga di comando fos sero concatenati. Questo per- se tutti i file_di_programma e i testi sorgenti della riga di comando fos sero concatenati. Questo per-
mette di realizzare librerie di funzioni AWK senza bisogno di includerle in ogni nuovo programma AWK che mette di realizzare librerie di funzioni AWK senza bisogno di includerle in ogni nuovo programma AWK che
le usi; inoltre si possono combinare funzioni di libreria con programm i provenienti dalla riga di le usi; inoltre si possono combinare funzioni di libreria con programm i provenienti dalla riga di
comando. comando.
Oltre a ci�, le righe che iniziano con @include possono essere usate pe r includere altri file sorgenti Oltre a ci�, le righe che iniziano con @include possono essere usate pe r includere altri file sorgenti
nel programma, rendendo l'uso della libreria ancora pi� facile. Questo � equivalente all'uso nel programma, rendendo l'uso della libreria ancora pi� facile. Questo � equivalente all'uso
dell'opzione -i. dell'opzione --include .
Le righe che iniziano con @load possono essere usate per caricare funzio ni di estensione nel programma. Le righe che iniziano con @load possono essere usate per caricare funzio ni di estensione nel programma.
Questo � equivalente all'uso dell'opzione -l. Questo � equivalente all'uso dell'opzione --load .
La variabile d'ambiente AWKPATH specifica il percorso lungo il quale cerc are i file sorgenti indicati La variabile d'ambiente AWKPATH specifica il percorso lungo il quale cerc are i file sorgenti indicati
con le opzioni -f e -i. Se questa variabile non esiste , il percorso predefinito con le opzioni -f e --include . Se questa variabile non esist e, il percorso predefinito
"/usr/local/share/awk" (la directory in questione pu� variare a seconda d i come gawk � stato compilato e "/usr/local/share/awk" (la directory in questione pu� variare a seconda d i come gawk � stato compilato e
installato). Se un nome di file dato con l'opzione -f contiene un ca rattere “/”, non viene eseguita installato). Se un nome di file dato con l'opzione -f contiene un ca rattere “/”, non viene eseguita
nessuna ricerca sul percorso. nessuna ricerca sul percorso.
La variabile d'ambiente AWKLIBPATH specifica il percorso lungo il quale c ercare i file sorgenti indicati La variabile d'ambiente AWKLIBPATH specifica il percorso lungo il quale c ercare i file sorgenti indicati
con l'opzione -l, Se questa variabile non esiste, il percorso predefin con l'opzione --load . Se questa variabile non esiste, il percorso pred
ito � "/usr/local/lib/gawk" (la efinito � "/usr/local/lib/gawk"
directory in questione pu� variare a seconda di come gawk � stato compila (la directory in questione pu� variare a seconda di come gawk � stato com
to e installato). pilato e installato).
Gawk esegue i programmi AWK nell'ordine seguente. Per prima cosa, vengon o effettuati tutti gli assegna- Gawk esegue i programmi AWK nell'ordine seguente. Per prima cosa, vengon o effettuati tutti gli assegna-
menti di variabile indicati dall'opzione -v. Successivamente, gawk com pila il programma in un formato menti di variabile indicati dall'opzione -v. Successivamente, gawk com pila il programma in un formato
interno. Poi gawk esegue il codice nella regola/e BEGIN (se esistente/i) , quindi procede con la lettura interno. Poi gawk esegue il codice nella regola/e BEGIN (se esistente/i) , quindi procede con la lettura
di ciascun file indicato nel vettore ARGV (fino a ARGV[ARGC-1]). Se n on ci sono file indicati nella di ciascun file indicato nel vettore ARGV (fino a ARGV[ARGC-1]). Se n on ci sono file indicati nella
riga di comando, gawk legge dallo standard input. riga di comando, gawk legge dallo standard input.
Se un nome di file nella riga di comando ha la forma var=val, � trattato come un assegnamento di vari- Se un nome di file nella riga di comando ha la forma var=val, � trattato come un assegnamento di vari-
abile. Alla variabile var sar� assegnato il valore val (questo acca de dopo che ogni regola BEGIN � abile. Alla variabile var sar� assegnato il valore val (questo acca de dopo che ogni regola BEGIN �
stata eseguita). L'assegnamento di variabili da riga di comando � utilis sima per assegnare dinamica- stata eseguita). L'assegnamento di variabili da riga di comando � utilis sima per assegnare dinamica-
skipping to change at line 349 skipping to change at line 356
campo pu� opzionalmente essere preceduta da un valore, separato da una v irgola, che specifica il numero campo pu� opzionalmente essere preceduta da un valore, separato da una v irgola, che specifica il numero
di caratteri da saltare prima di posizionarsi all'inizio del campo. Il v alore di FS � ignorato. Asseg- di caratteri da saltare prima di posizionarsi all'inizio del campo. Il v alore di FS � ignorato. Asseg-
nando un nuovo valore a FS o a FPAT si annulla l'effetto di FIELDWIDTHS. nando un nuovo valore a FS o a FPAT si annulla l'effetto di FIELDWIDTHS.
Similmente, se alla variabile FPAT � assegnata una stringa che rappresent a un'espressione regolare, ogni Similmente, se alla variabile FPAT � assegnata una stringa che rappresent a un'espressione regolare, ogni
campo � composto di testo che corrisponde a quella espressione regolare. In questo caso, l'espressione campo � composto di testo che corrisponde a quella espressione regolare. In questo caso, l'espressione
regolare descrive i campi stessi, invece che il testo che separa i campi . Assegnando un nuovo valore a regolare descrive i campi stessi, invece che il testo che separa i campi . Assegnando un nuovo valore a
FS o a FIELDWIDTHS si annulla l'effetto di FPAT. FS o a FIELDWIDTHS si annulla l'effetto di FPAT.
Ogni campo nel record in input pu� essere individuato dalla sua posizione : $1, $2, e cos� via. $0 � Ogni campo nel record in input pu� essere individuato dalla sua posizione : $1, $2, e cos� via. $0 �
l'intero record. Non � necessario che i campi siano indicati da costanti l'intero record, compresi eventuali spazi bianchi iniziali e finali. Non
: � necessario che i campi siano
indicati da costanti:
n = 5 n = 5
print $n print $n
stampa il quinto campo del record in input. stampa il quinto campo del record in input.
La variabile NF contiene il numero di campi nel record in input. La variabile NF contiene il numero di campi nel record in input.
Riferimenti a campi inesistenti (cio� campi dopo $NF) producono la strin Riferimenti a campi inesistenti (cio� campi dopo $NF) producono la string
ga vuota. Tuttavia, l'assegna- a vuota. Tuttavia, l'assegna-
mento ad un campo inesistente (per esempio $(NF+2) = 5) provoca l'increme mento ad un campo inesistente (per esempio $(NF+2) = 5) provoca l'in
nto del valore di NF, crea cremento del valore di NF, crea
tutti i campi intermedi assegnando loro la stringa nulla, e fa s� che tutti i campi intermedi assegnando loro la stringa nulla, e fa s� che il
il valore di $0 sia ricalcolato valore di $0 sia ricalcolato
utilizzando OFS per separare i campi. Riferimenti a campi con indice utilizzando OFS per separare i campi. Riferimenti a campi con indi
negativo producono un errore ce negativo producono un errore
fatale. Il decremento di NF provoca la perdita dei campi di indice super iore al valore impostato, ed il fatale. Il decremento di NF provoca la perdita dei campi di indice super iore al valore impostato, ed il
ricalcolo di $0, utilizzando OFS per separare i campi. ricalcolo di $0, utilizzando OFS per separare i campi.
L'assegnamento di un valore a un campo esistente provoca la ricostruzione dell'intero record quando si L'assegnamento di un valore a un campo esistente provoca la ricostruzio ne dell'intero record quando si
faccia riferimento a $0. Analogamente, assegnare un valore a $0 provoca una nuova divisione del record, faccia riferimento a $0. Analogamente, assegnare un valore a $0 provoca una nuova divisione del record,
creando nuovi valori per i suoi campi. creando nuovi valori per i suoi campi.
Variabili predefinite Variabili predefinite
Le variabili predefinite di gawk sono: Le variabili predefinite di gawk sono:
ARGC Il numero di argomenti da riga di comando (non include le opz ioni di gawk o il sorgente del ARGC Il numero di argomenti da riga di comando (non include le op zioni di gawk o il sorgente del
programma). programma).
ARGIND L'indice in ARGV del file correntemente in elaborazione. ARGIND L'indice in ARGV del file correntemente in elaborazione.
ARGV Vettore degli argomenti della riga di comando. Il vettore � indicizzato da 0 ad ARGC - 1. ARGV Vettore degli argomenti della riga di comando. Il vettore � indicizzato da 0 ad ARGC - 1.
La modifica dinamica del contenuto di ARGV pu� controllare i file usati per i dati. La modifica dinamica del contenuto di ARGV pu� controllare i file usati per i dati.
BINMODE Su sistemi non-POSIX, specifica l'uso della modalit� “binaria ” per tutti i file I/O. I val- BINMODE Su sistemi non-POSIX, specifica l'uso della modalit� “binaria ” per tutti i file I/O. I val-
ori numerici 1, 2 e 3 specificano che i file di input, i file di output e tutti i file, ori numerici 1, 2 e 3 specificano che i file di input, i file di output e tutti i file,
rispettivamente, dovrebbero usare I/O binari. I valori di st ringa "r" e "w" specificano che rispettivamente, dovrebbero usare I/O binari. I valori di st ringa "r" e "w" specificano che
i file di input e i file di output, rispettivamente, dovrebb i file di input e i file di output, rispettivamente, dovrebbe
ero usare I/O binari. I valori ro usare I/O binari. I valori
di stringa "rw" e "wr" specificano che tutti i file dovrebber di stringa "rw" e "wr" specificano che tutti i file dovrebbe
o usare I/O binari. Qualsiasi ro usare I/O binari. Qualsiasi
altro valore di stringa � trattato come "rw", ma genera un me ssaggio di avvertimento. altro valore di stringa � trattato come "rw", ma genera un me ssaggio di avvertimento.
CONVFMT Il formato di conversione dei numeri, quello predefinito � "% .6g". CONVFMT Il formato di conversione dei numeri, quello predefinito � "% .6g".
ENVIRON Un vettore contenente i valori dell'ambiente corrente. Il ve ttore � indicizzato dalle vari- ENVIRON Un vettore contenente i valori dell'ambiente corrente. Il ve ttore � indicizzato dalle vari-
abili d'ambiente, e ogni elemento � il valore di quella v ariabile (per esempio, ENVI- abili d'ambiente, e ogni elemento � il valore di quell a variabile (per esempio, ENVI-
RON["HOME"] potrebbe essere "/home/arnold"). RON["HOME"] potrebbe essere "/home/arnold").
In modalit� POSIX, la modifica di questo vettore non ha effe In modalit� POSIX, la modifica di questo vettore non ha effet
tto sull'ambiente ereditato dai to sull'ambiente ereditato dai
programmi che gawk esegue per ridirezione o tramite la funzio programmi che gawk esegue per ridirezione o tramite la funzi
ne system(). Altrimenti, gawk one system(). Altrimenti, gawk
aggiorna il suo ambiente reale in modo che i programmi che er edita vedano le modifiche. aggiorna il suo ambiente reale in modo che i programmi che er edita vedano le modifiche.
ERRNO Se ha luogo un errore di sistema durante una ridirezione per una getline, o durante una let- ERRNO Se ha luogo un errore di sistema durante una ridirezione per una getline, o durante una let-
tura fatta con getline, oppure in una close(), ERRNO viene tura fatta con getline, oppure in una close(), ERRNO vi
impostato a una stringa che ene impostato a una stringa che
descrive l'errore. Il valore � passibile di traduzion descrive l'errore. Il valore � passibile di traduzione
e nelle localizzazioni diverse nelle localizzazioni diverse
dall'inglese. Se la stringa in ERRNO corrisponde a un errore dall'inglese. Se la stringa in ERRNO corrisponde a un er
di sistema descritto nella rore di sistema descritto nella
variabile errno(3), il corrispondente valore numeri variabile errno(3), il corrispondente valore numeric
co pu� essere trovato in o pu� essere trovato in
PROCINFO["errno"]. Per errori non di sistema, l'elemento PRO CINFO["errno"] varr� zero. PROCINFO["errno"]. Per errori non di sistema, l'elemento PRO CINFO["errno"] varr� zero.
FIELDWIDTHS Una lista di dimensioni di campo separate da spazi. Se impos tato, gawk suddivide l'input FIELDWIDTHS Una lista di dimensioni di campo separate da spazi. Se im postato, gawk suddivide l'input
secondo campi di larghezza fissa, anzich� usare il valore del la variabile FS come separatore secondo campi di larghezza fissa, anzich� usare il valore del la variabile FS come separatore
di campo. Ogni larghezza di campo pu� opzionalmente essere p receduta da un valore, separato di campo. Ogni larghezza di campo pu� opzionalmente essere p receduta da un valore, separato
da una virgola, che specifica il numero di caratteri d a saltare prima di posizionarsi da una virgola, che specifica il numero di caratteri da s altare prima di posizionarsi
all'inizio del campo. Si veda Campi, pi� sopra. all'inizio del campo. Si veda Campi, pi� sopra.
FILENAME Il nome del file di input corrente. Se non sono specificati file nella riga di comando, il FILENAME Il nome del file di input corrente. Se non sono specificati file nella riga di comando, il
valore di FILENAME � “-”. Tuttavia, FILENAME � indefinito al l'interno della regola BEGIN (a valore di FILENAME � “-”. Tuttavia, FILENAME � indefinito al l'interno della regola BEGIN (a
meno che non sia impostato da getline). meno che non sia impostato da getline).
FNR Il numero di record corrente del file in input corrente. FNR Il numero di record corrente del file in input corrente.
FPAT Un'espressione regolare che descrive il contenuto dei campi i n un record. Se impostato, FPAT Un'espressione regolare che descrive il contenuto dei cam pi in un record. Se impostato,
gawk suddivide l'input in campi, dove i campi corrispondono a ll'espressione regolare, invece gawk suddivide l'input in campi, dove i campi corrispondono a ll'espressione regolare, invece
di usare il valore della variabile FS come separatore di camp o. Si veda Campi, pi� sopra. di usare il valore di FS come separatore di campo. Si veda C ampi, pi� sopra.
FS Il separatore di campo, quello predefinito � uno spazio. Si veda Campi, pi� sopra. FS Il separatore di campo, quello predefinito � uno spazio. Si veda Campi, pi� sopra.
FUNCTAB Un vettore i cui indici e i corrispondenti valori sono i nomi FUNCTAB Un vettore i cui indici e i corrispondenti valori sono i nom
di tutte le funzioni definite i di tutte le funzioni definite
dall'utente o funzioni di estensione presenti nel prog dall'utente o funzioni di estensione presenti nel programm
ramma. NOTA: Si pu� non usare a. NOTA: Si pu� non usare
l'istruzione delete applicandola al vettore FUNCTAB. l'istruzione delete applicandola al vettore FUNCTAB.
IGNORECASE Controlla la sensibilit� alla distinzione tra maiuscole e min IGNORECASE Controlla la sensibilit� alla distinzione tra maiuscole e mi
uscole in tutte le espressioni nuscole in tutte le espressioni
regolari e nelle operazioni sulle stringhe. Se IGNORECASE h regolari e nelle operazioni sulle stringhe. Se IGNORECASE ha
a un valore diverso da zero, il un valore diverso da zero, il
confronto di stringhe e la ricerca di corrispondenze nei crit confronto di stringhe e la ricerca di corrispondenze nei cri
eri di ricerca, la separazione teri di ricerca, la separazione
di campi tramite FS e FPAT, la separazione di record trami di campi tramite FS e FPAT, la separazione di record tramite
te RS, la ricerca di corrispon- RS, la ricerca di corrispon-
denze nelle espressioni regolari con ~ e !~, e le funzioni denze nelle espressioni regolari con ~ e !~, e le funzion
predefinite gensub(), gsub(), i predefinite gensub(), gsub(),
index(), match(), patsplit(), split(), e sub() ignoreranno tu tti la differenza tra maiuscole index(), match(), patsplit(), split(), e sub() ignoreranno tu tti la differenza tra maiuscole
e minuscole nelle operazioni con le espressioni regolari. NO TA: Non ha effetto sugli indici e minuscole nelle operazioni con le espressioni regolari. NO TA: Non ha effetto sugli indici
dei vettori. Tuttavia, sulle funzioni asort() e asorti() ha effetto. dei vettori. Tuttavia, sulle funzioni asort() e asorti() ha effetto.
Cos�, se IGNORECASE � diverso da zero, /aB/ corrisponde Cos�, se IGNORECASE � diverso da zero, /aB/ corrisponde a tu
a tutte queste stringhe : "ab", tte queste stringhe : "ab",
"aB", "Ab", e "AB". Come per tutte le variabili di AWK, il v "aB", "Ab", e "AB". Come per tutte le variabili di AWK, il
alore iniziale di IGNORECASE � valore iniziale di IGNORECASE �
zero, cosicch� tutte le operazioni sulle espressioni regolari e su stringhe normalmente dis- zero, cosicch� tutte le operazioni sulle espressioni regolari e su stringhe normalmente dis-
tinguono tra maiuscole e minuscole. tinguono tra maiuscole e minuscole.
LINT Fornisce un controllo dinamico dell'opzione --lint dall'inter no di un programma AWK. Quando LINT Fornisce un controllo dinamico dell'opzione --lint dall'inter no di un programma AWK. Quando
il valore � "vero", gawk stampa avvertimenti lint. Quando � " il valore � "vero", gawk stampa avvertimenti lint. Quando � "
falso", no. Assegnando il val- falso", no. I valori specifi-
ore di stringa "fatal", gli avvertimenti lint sono considerat cabili con l'opzione --lint possono anche essere assegnati al
i errori fatali, esattamente la variabile d'ambiente LINT, e
come --lint=fatal. Qualsiasi altro valore "vero" stampa solo hanno gli stessi effetti. Qualsiasi altro valore "vero" stam
avvertimenti. pa solo avvertimenti.
NF Il numero di campi nel record corrente. NF Il numero di campi nel record corrente.
NR Il numero totale di record incontrati finora. NR Il numero totale di record incontrati finora.
OFMT Il formato d'uscita per i numeri, quello predefinito � "%.6g" . OFMT Il formato d'uscita per i numeri, quello predefinito � "%.6g" .
OFS Il separatore di campi in uscita, normalmente � uno spazio. OFS Il separatore di campi in uscita, normalmente � uno spazio.
ORS Il separatore di record in uscita, normalmente la sequenza di fine linea ("newline"). ORS Il separatore di record in uscita, normalmente la sequenza di fine linea ("newline").
PREC La precisione di lavoro di numeri a virgola mobile con preci sione arbitraria, 53 [bit] � il PREC La precisione di lavoro di numeri a virgola mobile con precis ione arbitraria, 53 [bit] � il
valore predefinito. valore predefinito.
PROCINFO Gli elementi di questo vettore forniscono accesso alle inform PROCINFO Gli elementi di questo vettore forniscono accesso alle inf
azioni sul programma AWK in ormazioni sul programma AWK in
esecuzione. Su alcuni sistemi, ci possono essere eleme esecuzione. Su alcuni sistemi, ci possono essere elementi
nti nel vettore, da "gruppo1" a nel vettore, da "gruppo1" a
"gruppon" per qualsiasi n, che � il numero di gruppi supple "gruppon" per qualsiasi n, che � il numero di gruppi su
mentari che ha il processo. pplementari che ha il processo.
Usare l'operatore in per verificare la presenza di questi Usare l'operatore in per verificare la presenza di questi el
elementi. I seguenti elementi ementi. I seguenti elementi
sono sicuramente disponibili: sono sicuramente disponibili:
PROCINFO["argv"] Gli argomenti sulla riga di comando come sono visti da gawk a livello PROCINFO["argv"] Gli argomenti sulla riga di comando co me sono visti da gawk a livello
di linguaggio C. Gli indici partono dal lo zero. di linguaggio C. Gli indici partono dal lo zero.
PROCINFO["egid"] Il valore della chiamata di sistema gete gid(2). PROCINFO["egid"] Il valore della chiamata di sistema gete gid(2).
PROCINFO["errno"] Il valore di errno(3) quando ERRNO � i mpostato al messaggio di errore PROCINFO["errno"] Il valore di errno(3) quando ERRNO � imp ostato al messaggio di errore
associato. associato.
PROCINFO["euid"] Il valore della chiamata di sistema gete uid(2). PROCINFO["euid"] Il valore della chiamata di sistema gete uid(2).
PROCINFO["FS"] "FS" se la separazione in campi con FS � PROCINFO["FS"] "FS" se la separazione in campi con
attiva, "FPAT" se la sepa- FS � attiva, "FPAT" se la sepa-
razione in campi con FPAT � attiva, "FI razione in campi con FPAT � attiva, "FIE
ELDWIDTHS" se la separazione in LDWIDTHS" se la separazione in
campi con FIELDWIDTHS � attiva, o "API" campi con FIELDWIDTHS � attiva, o "API"
se la separazione in campi con se la separazione in campi con
l'analizzatore di input API � attiva. l'analizzatore di input API � attiva.
PROCINFO["gid"] Il valore della chiamata di sistema getg id(2). PROCINFO["gid"] Il valore della chiamata di sistema getg id(2).
PROCINFO["identifiers"] PROCINFO["identifiers"]
Un sottovettore, avente come indici i n Un sottovettore, avente come indici i no
omi di tutti gli identificatori mi di tutti gli identificatori
usati nel testo del programma AWK. I va usati nel testo del programma AWK. I
lori indicano quello che gawk valori indicano quello che gawk
conosce degli identificatori dopo av conosce degli identificatori dopo aver f
er finito di analizzare il pro- inito di analizzare il pro-
gramma; essi non sono aggiornati durante gramma; essi non sono aggiornati dura
l'esecuzione del programma. nte l'esecuzione del programma.
Per ogni identificatore, il valore dell' elemento � uno fra questi: Per ogni identificatore, il valore dell' elemento � uno fra questi:
"array" L'identificatore � un vettor e. "array" L'identificatore � un vettor e.
"builtin" L'identificatore � una funzi one predefinita. "builtin" L'identificatore � una funzi one predefinita.
"extension" L'identificatore � una funz "extension" L'identificatore � una funzi
ione di estensione caricata con one di estensione caricata con
@load o -l. @load o --load.
"scalar" L'identificatore � uno scala re. "scalar" L'identificatore � uno scala re.
"untyped" L'identificatore non � class ificato (potrebbe essere usato "untyped" L'identificatore non � clas sificato (potrebbe essere usato
come scalare o come vettore, gawk ancora non lo sa). come scalare o come vettore, gawk ancora non lo sa).
"user" L'identificatore � una funzi one definita dall'utente. "user" L'identificatore � una funzi one definita dall'utente.
PROCINFO["platform"] Una stringa che indica la piattaforma PROCINFO["pgrpid"] Il valore dalla chiamata di sistema getp
sulla quale gawk � stato compi- grp(2).
lato. Pu� essere una delle alternative
seguenti:
"vms" OpenVMS o Vax/VMS. PROCINFO["pid"] Il valore dalla chiamata di sistema getp id(2).
"macosx" PROCINFO["platform"] Una stringa che indica la piattaforma su
Mac OS X. lla quale gawk � stato compi-
lato. Pu� essere una delle alternative
seguenti:
"cygwin", "djgpp", "mingw" "djgpp", "mingw"
Microsoft Windows, avendo compila Microsoft Windows, compilato tra
to in Cygwin, DJGPP, o MinGW, mite DJGPP o MinGW, rispettiva-
rispettivamente. mente.
"os2" OS/2. "os2" OS/2.
"posix" "posix"
GNU/Linux e i sistemi Unix preced GNU/Linux, Cygwin, Mac OS X, e i
enti. sistemi Unix precedenti.
PROCINFO["pgrpid"] Il process group ID del processo corrent
e.
PROCINFO["pid"] L'ID di processo del processo corrente. "vms" OpenVMS o Vax/VMS.
PROCINFO["ppid"] Il process ID del "padre" [parent] del p rocesso corrente. PROCINFO["ppid"] Il valore della chiamata di sistema getp pid(2).
PROCINFO["strftime"] La stringa di formato data/ora predefini PROCINFO["strftime"] La stringa di formato data/ora predefini
ta per strftime(). ta per strftime(). Cambiandone
il valore cambia anche il modo con cui
strftime() visualizza i valori
di data e ora se chiamata senza specific
are argomenti.
PROCINFO["uid"] Il valore della chiamata di sistema getu id(2). PROCINFO["uid"] Il valore della chiamata di sistema getu id(2).
PROCINFO["version"] la versione di gawk. PROCINFO["version"] La versione di gawk.
I seguenti elementi sono presenti se � disponibile il caricamento delle estensioni I seguenti elementi sono presenti se � disponibile il caricamento delle estensioni
dinamiche. dinamiche.
PROCINFO["api_major"] PROCINFO["api_major"]
La versione principale dell'estensione API. La versione principale dell'estensione API.
PROCINFO["api_minor"] PROCINFO["api_minor"]
La versione secondaria dell'estensione API. La versione secondaria dell'estensione API.
I seguenti elementi sono disponibili se il supporto MPFR � st ato compilato in gawk: I seguenti elementi sono disponibili se il supporto MPFR � st ato compilato in gawk:
PROCINFO["gmp_version"] PROCINFO["gmp_version"]
La versione della libreria GNU MP usata per il suppor to ai numeri con precisione La versione della libreria GNU GMP usata per il su pporto ai numeri con precisione
arbitraria in gawk. arbitraria in gawk.
PROCINFO["mpfr_version"] PROCINFO["mpfr_version"]
La versione della libreria GNU MPFR usata per il su pporto ai numeri con precisione La versione della libreria GNU MPFR usata per il suppo rto ai numeri con precisione
arbitraria in gawk. arbitraria in gawk.
PROCINFO["prec_max"] PROCINFO["prec_max"]
La massima precisione supportata dalla libreria GNU M PFR per i numeri a virgola La massima precisione supportata dalla libreria GNU MPFR per i numeri a virgola
mobile con precisione arbitraria. mobile con precisione arbitraria.
PROCINFO["prec_min"] PROCINFO["prec_min"]
La minima precisione supportata dalla libreria GNU MPF R per i numeri a virgola mobile La minima precisione supportata dalla libreria GNU MPF R per i numeri a virgola mobile
con precisione arbitraria. con precisione arbitraria.
I seguenti elementi possono essere impostati da un programma per cambiare il comportamento I seguenti elementi possono essere impostati da un programm a per cambiare il comportamento
di gawk: di gawk:
PROCINFO["NONFATAL"] PROCINFO["NONFATAL"]
Se presente, gli errori di I/O per tutte le ridirezion i diventano non fatali. Se presente, gli errori di I/O per tutte le ridirezion i diventano non fatali.
PROCINFO["nome", "NONFATAL"] PROCINFO["nome", "NONFATAL"]
Rende gli errori relativi a nome non fatali. Rende gli errori relativi a nome non fatali.
PROCINFO["comando", "pty"] PROCINFO["comando", "pty"]
Usa una pseudo-tty per una comunicazione bidirez ionale con comando invece di Usa una pseudo-tty per una comunicazione bidirezi onale con comando invece di
impostare due "pipe" unidirezionali. impostare due "pipe" unidirezionali.
PROCINFO["input", "READ_TIMEOUT"] PROCINFO["input", "READ_TIMEOUT"]
Il tempo massimo a disposizione in millisecondi per le Il tempo massimo a disposizione in millisecondi pe
ggere i dati da input, dove r leggere i dati da input, dove
input � una stringa di ridirezione o un nome di file input � una stringa di ridirezione o un nome di file.
. Un valore di zero o o minore Un valore di zero o o minore
di zero significa nessun limite di tempo. di zero significa nessun limite di tempo.
PROCINFO["input", "RETRY"] PROCINFO["input", "RETRY"]
Se un errore di I/O non fatale si verifica leggendo da Se un errore di I/O non fatale si verifica legge
ti da un file di input, e ndo dati da un file di input, e
questo elemento di vettore esiste, getline restitu questo elemento di vettore esiste, getline restituisce
isce -2 invece di restituire il -2 invece di restituire il
valore previsto di -1 e di configurare l'input in modo da non fornire ulteriori dati. valore previsto di -1 e di configurare l'input in modo da non fornire ulteriori dati.
Un errore di I/O non fatale si verifica quando errno( Un errore di I/O non fatale si verifica quando errno(3
3) ha il valore EAGAIN, EWOULD- ) ha il valore EAGAIN, EWOULD-
BLOCK, EINTR o ETIMEDOUT. Questo pu� tornare u BLOCK, EINTR o ETIMEDOUT. Questo pu� tornare
tile nel caso si utilizzi utile nel caso si utilizzi
PROCINFO["input", "READ_TIMEOUT"] o in situazioni PROCINFO["input", "READ_TIMEOUT"] o in situazioni in c
in cui un descrittore di file � ui un descrittore di file �
stato configurato in modo da non bloccarsi in caso di errore. stato configurato in modo da non bloccarsi in caso di errore.
PROCINFO["sorted_in"] PROCINFO["sorted_in"]
Se questo elemento esiste in PROCINFO, il suo valore c Se questo elemento esiste in PROCINFO, il suo valor
ontrolla l'ordine in cui gli e controlla l'ordine in cui gli
elementi del vettore sono attraversati nei cicli elementi del vettore sono attraversati nei cicli for
for. I valori supportati sono . I valori supportati sono
"@ind_str_asc", "@ind_num_asc", "@val_type_asc", "@ "@ind_str_asc", "@ind_num_asc", "@val_type_asc", "
val_str_asc", "@val_num_asc", @val_str_asc", "@val_num_asc",
"@ind_str_desc", "@ind_num_desc", "@val_type_desc", "@ val_str_desc", "@val_num_desc", "@ind_str_desc", "@ind_num_desc", "@val_type_desc", "@ val_str_desc", "@val_num_desc",
e "@unsorted". Il valore pu� essere anche il nome (co me stringa) di una qualsiasi e "@unsorted". Il valore pu� essere anche il nome (come stringa) di una qualsiasi
funzione di confronto definita nel seguente modo: funzione di confronto definita nel seguente modo:
function cmp_func(i1, v1, i2, v2) function cmp_func(i1, v1, i2, v2)
dove i1 e i2 sono gli indici, e v1 e v2 sono i valori corrispondenti dei due elementi dove i1 e i2 sono gli indici, e v1 e v2 sono i valori corrispondenti dei due elementi
che si stanno confrontando. Dovrebbe restituire un nu mero minore, uguale o maggiore che si stanno confrontando. Dovrebbe restituire un n umero minore, uguale o maggiore
di 0, a seconda di come devono essere ordinati gli ele menti del vettore. di 0, a seconda di come devono essere ordinati gli ele menti del vettore.
ROUNDMODE ROUNDMODE
La modalit� di arrotondamento da usare per operazioni sui numeri con precisione arbi- La modalit� di arrotondamento da usare per operazioni sui numeri con precisione arbi-
traria, quella predefinita � "N" (IEEE-754 roundTiesTo traria, quella predefinita � "N" (IEEE-754 roundTies
Even mode). Sono accettati i ToEven mode). Sono accettati i
valori "N" o "n" per roundTiesToEven, "U" o "u" per valori:
roundTowardPositive, "D" o "d"
per roundTowardNegative, "Z" o "z" per roundTowardZero "A" o "a"
e, se la versione della libre- per arrotondamento lontano da zero (per eccesso
ria GNU MPFR in uso li supporta, "A" o "a" per arro ). Questi valori sono disponi-
tondamento lontano da zero (per bili solo se la versione della libreria GNU M
eccesso). PFR supporta gli arrotondamenti
lontano da zero.
"D" o "d" per roundTowardNegative.
RS Il separatore di record in input, normalmente "newline "N" o "n" per roundTiesToEven.
".
"U" o "u" per roundTowardPositive.
"Z" o "z" per roundTowardZero.
RS Il separatore di record in input (se non specificato �
"newline").
RT Il terminatore di record. Gawk pone RT uguale al test o in input che corrisponde al RT Il terminatore di record. Gawk pone RT uguale al test o in input che corrisponde al
carattere o alla espressione regolare indicati in RS. carattere o alla espressione regolare indicati in RS.
RSTART L'indice del primo carattere trovato da match(), opp ure 0 se non ci sono corrispon- RSTART L'indice del primo carattere trovato da match(), opp ure 0 se non ci sono corrispon-
denze (questo implica che gli indici dei caratteri ini zino da uno). denze (questo implica che gli indici dei caratteri ini zino da uno).
RLENGTH RLENGTH
La lunghezza della stringa trovata da match(); oppure -1 se non ci sono corrispon- La lunghezza della stringa trovata da match(); oppure -1 se non ci sono corrispon-
denze. denze.
SUBSEP Il carattere usato per separare indici multipli negli SUBSEP La stringa usata per separare indici multipli negli
elementi di un vettore, quello elementi di un vettore, quella
predefinito � "\034". predefinita � "\034".
SYMTAB Un vettore i cui indici sono i nomi di tutti i vettori e le variabili globali attual- SYMTAB Un vettore i cui indici sono i nomi di tutti i vettori e le variabili globali attual-
mente definite presenti nel programma. Il vettore pu� essere usato per l'accesso mente definite presenti nel programma. Il vettore pu� essere usato per l'accesso
indiretto in lettura e scrittura del valore di una var iabile: indiretto in lettura e scrittura del valore di una var iabile:
foo = 5 foo = 5
SYMTAB["foo"] = 4 SYMTAB["foo"] = 4
print foo # stampa 4 print foo # stampa 4
La funzione typeof() pu� essere usata per controllare se un elemento in SYMTAB � un La funzione typeof() pu� essere usata per controllare se un elemento in SYMTAB � un
vettore. Non � possibile usare l'istruzione delete per il vettore SYMTAB e neppure vettore. Non � possibile usare l'istruzione delete per il vettore SYMTAB e neppure
impostare elementi il cui indice non sia un nome di va riabile. impostare elementi il cui indice non sia un nome di va riabile.
TEXTDOMAIN TEXTDOMAIN
Il dominio di testo del programma AWK ; usato per trov are le traduzioni localizzate Il dominio di testo del programma AWK ; usato per trov are le traduzioni localizzate
delle stringhe del programma. delle stringhe del programma.
Vettori Vettori
I vettori hanno per indice un'espressione tra parentesi quadre ([ e ]). Se l'espressione � formata da I vettori hanno per indice un'espressione tra parentesi quadre ([ e ]). Se l'espressione � formata da
una lista di espressioni (expr, expr ...) l'indice del vettore � una str inga ottenuta concatenando i una lista di espressioni (expr, expr ...) l'indice del vettore � una str inga ottenuta concatenando i
valori (stringa) di ogni espressione, separati dal valore della varia bile SUBSEP. Questa modalit� � valori (stringa) di ogni espressione, separati dal valore della variab ile SUBSEP . Questa modalit� �
usata per simulare vettori multidimensionali. Per esempio: usata per simulare vettori multidimensionali. Per esempio:
i = "A"; j = "B"; k = "C" i = "A"; j = "B"; k = "C"
x[i, j, k] = "hello, world\n" x[i, j, k] = "hello, world\n"
assegna la stringa "hello, world\n" all'elemento del vettore x che � indicizzato dalla stringa assegna la stringa "hello, world\n" all'elemento del vettore x che � indicizzato dalla stringa
"A\034B\034C". In AWK, tutti i vettori sono associativi, cio� indicizzat i da valori di tipo stringa. "A\034B\034C". In AWK, tutti i vettori sono associativi, cio� indicizzat i da valori di tipo stringa.
L'operatore speciale in pu� essere usato per controllare se un vettor e contiene un certo valore come L'operatore speciale in pu� essere usato per controllare se un vettor e contiene un certo valore come
indice. indice.
skipping to change at line 673 skipping to change at line 690
gawk supporta veri vettori multidimensionali. Non richiede che tali vett ori siano ``rettangolare'' come gawk supporta veri vettori multidimensionali. Non richiede che tali vett ori siano ``rettangolare'' come
in C or C++. Per esempio: in C or C++. Per esempio:
a[1] = 5 a[1] = 5
a[2][1] = 6 a[2][1] = 6
a[2][2] = 7 a[2][2] = 7
NOTA: Si potrebbe aver necessit� di dire a gawk che un elemento di un vet tore � in realt� un sottovet- NOTA: Si potrebbe aver necessit� di dire a gawk che un elemento di un vet tore � in realt� un sottovet-
tore per usarlo dove gawk si aspetta di trovare un vettore (come nel sec ondo argomento di split()). Si tore per usarlo dove gawk si aspetta di trovare un vettore (come nel sec ondo argomento di split()). Si
pu� fare questo creando un elemento nel sottovettore e cancellandolo poi pu� fare questo creando un elemento nel sottovettore e cancellandolo poi
con l'istruzione delete. con l'istruzione delete .
Spazi-dei-nomi
Gawk fornisce una semplice funzionalit�, namespace , (spazio-dei-nomi) pe
r ovviare al fatto che tutte le
variabili in AWK sono globali.
Un nome qualificato consiste di due identificativi semplici, congiunti
da una coppia di ":" (::). Il
primo dei due identificativi designa lo spazio-dei-nomi (namespace) mentr
e il secondo � il nome della
variabile al suo interno. Tutti i nomi semplici (non qualificati) son
o considerati come appartenenti
allo spazio-dei-nomi ``corrente''; lo spazio-dei-nomi predefinito ha nome
awk. Comunque, gli identi-
ficativi i cui nomi sono composti solo da lettere maiuscole, vengono
sempre considerati come facenti
parte dello spazio-dei-nomi awk , anche se lo spazio-dei-nomi corrente �
diverso da quello predefinito.
Si pu� cambiare lo spazio-dei-nomi corente tramite la direttiva @namespac
e "nome" .
I nomi delle funzioni interne predefinite non possono essere usati come n
omi di uno spazio-dei-nomi. I
nomi di ulteriori funzioni, fornite da gawk possono essere usati come nom
i di uno spazio-dei-nomi o come
semplici identificativi in altri spazi-dei-nomi. Per ulteriori dettagli,
vedere GAWK: Effective AWK
Programming.
Notazione e conversione delle variabili Notazione e conversione delle variabili
Le variabili e i campi possono essere numeri (in virgola mobile), stringh e, o entrambe le cose. Possono Le variabili e i campi possono essere numeri (in virgola mobile), stringh e, o entrambe le cose. Possono
anche essere espressioni regolari. Come sia interpretato il valore di una variabile dipende dal con- anche essere espressioni regolari. Come sia interpretato il valore di un a variabile dipende dal con-
testo. In un'espressione numerica, sar� trattato come un numero; usato c ome stringa, sar� trattato come testo. In un'espressione numerica, sar� trattato come un numero; usato c ome stringa, sar� trattato come
tale. tale.
Per far trattare una variabile come numero, le si sommi zero; per ottene re che venga trattata come come Per far trattare una variabile come numero, le si sommi zero; per ottener e che venga trattata come come
stringa, le si concateni la stringa nulla. stringa, le si concateni la stringa nulla.
Le variabili non inizializzate hanno sia il valore numerico zero che il v alore di stringa "" (la stringa Le variabili non inizializzate hanno sia il valore numerico zero che il v alore di stringa "" (la stringa
nulla, o vuota). nulla, o vuota).
Quando una stringa deve essere convertita in un numero, la conversio Quando una stringa deve essere convertita in un numero, la conversione
ne � compiuta con strtod(3). I compiuta con strtod(3). I
numeri sono convertiti a stringhe usando sprintf(3) col valore di CONVFMT numeri sono convertiti a stringhe usando sprintf(3) col valore di CONVFM
come stringa di formato ed il T come stringa di formato ed il
valore numerico della variabile come argomento. Tuttavia, anche se tut valore numerico della variabile come argomento. Tuttavia, anche se tutti
ti i numeri in AWK sono in vir- i numeri in AWK sono in vir-
gola mobile ("float"), i valori privi di decimali sono sempre convertiti in numeri interi. Cos�, dati gola mobile ("float"), i valori privi di decimali sono sempre convertiti in numeri interi. Cos�, dati
CONVFMT = "%2.2f" CONVFMT = "%2.2f"
a = 12 a = 12
b = a "" b = a ""
la variabile b ha un valore di tipo stringa di "12" e non "12.00". la variabile b ha un valore di tipo stringa di "12" e non "12.00".
NOTA: Quando si opera in modalit� POSIX (come con l'opzione --posix), bis NOTA: Quando si opera in modalit� POSIX (come con l'opzione --posix),
ogna fare attenzione che le bisogna fare attenzione che le
impostazioni per la localizzazione possono interferire col modo in cui s impostazioni per la localizzazione possono interferire col modo in cui so
ono trattati i numeri decimali: no trattati i numeri decimali:
il separatore decimale dei numeri che si forniscono a gawk deve essere co il separatore decimale dei numeri che si forniscono a gawk deve essere c
nforme a quello che si aspetta onforme a quello che si aspetta
la localizzazione in uso, che sia un punto (.) o una virgola (,). la localizzazione in uso, che sia un punto (.) o una virgola (,).
Gawk esegue i confronti nel modo seguente: Se due variabili sono numeri che, sono confrontate numerica- Gawk esegue i confronti nel modo seguente: Se due variabili sono numerich e, sono confrontate numerica-
mente. Se una � numerica e l'altra � una stringa interpretabile come “st ringa numerica,” sono pure con- mente. Se una � numerica e l'altra � una stringa interpretabile come “st ringa numerica,” sono pure con-
frontate numericamente. Negli altri casi, gli eventuali valori numerici sono convertiti in stringhe, ed frontate numericamente. Negli altri casi, gli eventuali valori numerici sono convertiti in stringhe, ed
� eseguito un confronto tra stringhe. Ovviamente, due stringhe sono conf rontate come stringhe. � eseguito un confronto tra stringhe. Ovviamente, due stringhe sono conf rontate come stringhe.
Si noti che le costanti stringa, come "57", non sono stringhe numeriche Si noti che le costanti stringa, come "57", non sono stringhe numer
, ma solo costanti stringa. iche, ma solo costanti stringa.
L'idea di “stringa numerica” si applica solo ai campi, all'input di get L'idea di “stringa numerica” si applica solo ai campi, all'input di getli
line, a FILENAME, agli elementi ne, a FILENAME, agli elementi
di ARGV di ENVIRON, ed agli elementi di un vettore creato da split() o d di ARGV di ENVIRON , ed agli elementi di un vettore creato da split()
a patsplit() che abbiano le o da patsplit() che abbiano le
caratteristiche di una stringa numerica. L'idea fondamentale � che i d caratteristiche di una stringa numerica. L'idea fondamentale � che i dat
ati immessi dall'utente, e solo i immessi dall'utente, e solo
essi, se risultano essere numerici, saranno trattati come numeri. essi, se risultano essere numerici, saranno trattati come numeri.
Costanti ottali ed esadecimali Costanti ottali ed esadecimali
Nel codice sorgente del programma si possono usare costanti ottali ed esa decimali in stile C. Per esem- Nel codice sorgente del programma si possono usare costanti ottali ed esa decimali in stile C. Per esem-
pio, il valore ottale 011 � uguale al decimale 9, e il valore esadecimale 0x11 � uguale al decimale 17. pio, il valore ottale 011 � uguale al decimale 9, e il valore esadecimale 0x11 � uguale al decimale 17.
Costanti di tipo stringa Costanti di tipo stringa
Le costanti stringa in AWK sono sequenze di caratteri racchiusi t ra doppi apici (come "valore"). Le costanti stringa in AWK sono sequenze di caratteri racchiusi tra doppi apici (come "valore").
All'interno delle stringhe, sono riconosciute alcune sequenze di protezio ne, come in in C. Queste sono: All'interno delle stringhe, sono riconosciute alcune sequenze di protezio ne, come in in C. Queste sono:
\\ Una barra inversa letterale. \\ Una barra inversa letterale.
\a Il carattere “alert”; in genere il carattere ASCII BEL. \a Il carattere “alert”; in genere il carattere ASCII BEL.
\b Tasto di cancellazione all'indietro (backspace). \b Tasto di cancellazione all'indietro (backspace).
\f Salto pagina (form-feed). \f Salto pagina (form-feed).
\n Nuova riga (newline). \n Nuova riga (newline).
\r Ritorno carrello (CR). \r Ritorno carrello (CR).
\t Tabulazione orizzontale. \t Tabulazione orizzontale.
\v Tabulazione verticale. \v Tabulazione verticale.
\xcifre_esa \xcifre_esa
Il carattere rappresentato dalla stringa di cifre esadecimali dopo l a \x. Fino a due cifre esadec- Il carattere rappresentato dalla stringa di cifre esadecimali dopo l a \x. Fino a due cifre esadec-
imali che seguono sono considerate parte della sequenza di protez ione. Per esempio, "\x1B" � il imali che seguono sono considerate parte della sequenza di protezion e. Per esempio, "\x1B" � il
carattere ASCII ESC (escape). carattere ASCII ESC (escape).
\ddd Il carattere rappresentato da una sequenza di 3 cifre ottali. Per e sempio, "\033" � il carattere \ddd Il carattere rappresentato da una sequenza di 3 cifre ottali. Per esempio, "\033" � il carattere
ASCII ESC (escape). ASCII ESC (escape).
\c Il carattere letterale c. \c Il carattere letterale c.
In modalit� compatibile, i caratteri rappresentati da sequenze di protez ione ottali ed esadecimali sono In modalit� compatibile, i caratteri rappresentati da sequenze di protezi one ottali ed esadecimali sono
trattati letteralmente, se usati in costanti costituite da espressioni re golari. Cos�, /a\52b/ � equiv- trattati letteralmente, se usati in costanti costituite da espressioni re golari. Cos�, /a\52b/ � equiv-
alente a /a\*b/. alente a /a\*b/.
Costanti di tipo Regexp Costanti di tipo Regexp
Una costante di tipo espressione regolare � una sequenza di caratteri Una costante di tipo espressione regolare � una sequenza di caratteri rac
racchiusa tra barre (come /val- chiusa tra barre (come /val-
ore/). Come stabilire una corrispondenza con un'espressione regolare � d ore/). Come stabilire una corrispondenza con un'espressione regolare
escritto in maniera pi� det- descritto in maniera pi� det-
tagliata pi� avanti; vedere Espressioni regolari. tagliata pi� avanti; vedere Espressioni regolari.
Le sequenze di protezione descritte sopra si possono usare anche a ll'interno di costanti che sono Le sequenze di protezione descritte sopra si possono usare anche all'i nterno di costanti che sono
espressioni regolari (p.es., /[ \t\f\n\r\v]/ corrisponde a tutti i caratt eri non stampabili [bianchi]). espressioni regolari (p.es., /[ \t\f\n\r\v]/ corrisponde a tutti i caratt eri non stampabili [bianchi]).
Gawk consente anche di usare costanti formate da espressioni regolari f Gawk consente anche di usare costanti formate da espressioni regolari f
ortemente tipizzate. I nome di ortemente tipizzate. I nome di
tali costanti sono preceduti da un simbolo @ (cos�: @/valore/). tali costanti sono preceduti da un simbolo @ (cos�: @/valore/). Queste c
Queste costanti possono essere ostanti possono essere asseg-
assegnare a scalari (variabili, elementi di un vettore) e nare a scalari (variabili, elementi di un vettore) e passate a funzione
passate a funzione definite definite dall'utente. Le vari-
dall'utente. Le variabili il cui valore � stato assegnato in que abili il cui valore � stato assegnato in questo modo hanno come tipo quel
sto modo hanno come tipo quello lo di variabili di espressioni
di variabili di espressioni regolari. regolari.
CRITERI DI RICERCA E AZIONI CRITERI DI RICERCA E AZIONI
AWK � un linguaggio che procede per righe. Il criterio va a inizio r iga, l'azione lo segue. Le AWK � un linguaggio che procede per righe. Il criterio va a iniz io riga, l'azione lo segue. Le
istruzioni dell'azione sono racchiuse tra { e }. Sia il criterio che l'a zione possono mancare ma, natu- istruzioni dell'azione sono racchiuse tra { e }. Sia il criterio che l'a zione possono mancare ma, natu-
ralmente, non entrambi. Se manca il criterio, l'azione � eseguita per og ni record in input. Omettere ralmente, non entrambi. Se manca il criterio, l'azione � eseguita per ogni record in input. Omettere
invece l'azione equivale a specificare invece l'azione equivale a specificare
{ print } { print }
ossia stampare l'intero record. ossia stampare l'intero record.
I commenti cominciano col carattere #, e continuano fino a fine riga. Si possono separare le istruzioni I commenti cominciano col carattere #, e continuano fino a fine riga. Si possono separare le istruzioni
con righe vuote. Un'istruzione finisce normalmente alla fine della riga, a meno che non termini con una con righe vuote. Un'istruzione finisce normalmente alla fine della riga, a meno che non termini con una
virgola, {, ?, :, &&, o ||. Le istruzioni in righe terminanti con do o virgola, {, ?, :, &&, o ||. Anche le istruzioni in righe terminanti con
else continuano automaticamente do o else continuano automati-
alla riga successiva. Negli altri casi, una riga terminante con un “\” camente alla riga successiva. Negli altri casi, un'istruzione pu� co
continua alla successiva, e il ntinua sulla riga successiva se
"newline" � ignorato. termina con “\”, nel qual caso il "newline" � ignorato. Comunque, un “\”
che venga dopo un carattere #
non � speciale.
Si possono scrivere pi� istruzioni sulla stessa riga separandole con “ ;”. Questo si applica sia alle Si possono scrivere pi� istruzioni sulla stessa riga separandole con “ ;”. Questo si applica sia alle
istruzioni all'interno di un'azione (il caso pi� comune), sia ai gruppi c riterio-azione stessi. istruzioni all'interno di un'azione (il caso pi� comune), sia ai gruppi c riterio-azione stessi.
Criteri di ricerca Criteri di ricerca
I criteri di ricerca di AWK possono assumere le forme seguenti: I criteri di ricerca di AWK possono assumere le forme seguenti:
BEGIN BEGIN
END END
BEGINFILE BEGINFILE
skipping to change at line 803 skipping to change at line 839
espressione di relazione espressione di relazione
criterio && criterio criterio && criterio
criterio || criterio criterio || criterio
criterio ? criterio : criterio criterio ? criterio : criterio
(criterio) (criterio)
! criterio ! criterio
criterio1, criterio2 criterio1, criterio2
BEGIN e END sono due tipi speciali di criteri di ricerca, che non dipend ono dai dati in input. Le BEGIN e END sono due tipi speciali di criteri di ricerca, che non dipend ono dai dati in input. Le
azioni di tutti i criteri di ricerca BEGIN sono unite insieme, come se tutte le istruzioni fossero azioni di tutti i criteri di ricerca BEGIN sono unite insieme, come se tutte le istruzioni fossero
scritte in un'unica regola BEGIN, e sono eseguite prima che sia letto q ualsiasi input. Allo stesso scritte in un'unica regola BEGIN , e sono eseguite prima che sia letto q ualsiasi input. Allo stesso
modo, tutte le regole END sono fuse insieme, ed eseguite dopo che tutti i dati in input sono terminati o modo, tutte le regole END sono fuse insieme, ed eseguite dopo che tutti i dati in input sono terminati o
dopo che si � incontrata l'istruzione exit. BEGIN e END non possono esse re combinati con altri criteri dopo che si � incontrata l'istruzione exit . BEGIN e END non possono ess ere combinati con altri criteri
in espressioni di ricerca. I criteri BEGIN e END devono necessariamente essere seguiti dall'indicazione in espressioni di ricerca. I criteri BEGIN e END devono necessariamente essere seguiti dall'indicazione
di un'azione di un'azione
BEGINFILE e ENDFILE sono altri criteri speciali il cui contenuto � esegu ito prima della lettura del BEGINFILE e ENDFILE sono altri criteri speciali le cui azioni sono esegu ite prima della lettura del
primo record di ogni file di input richiamato sulla riga di comando , e dopo la lettura dell'ultimo primo record di ogni file di input richiamato sulla riga di comando , e dopo la lettura dell'ultimo
record di ognuno di questi file. All'interno della regola BEGINFILE il v alore di ERRNO � una stringa record di ognuno di questi file. All'interno della regola BEGINFILE , il valore di ERRNO � una stringa
vuota se il file � stato aperto con successo. Altrimenti, in caso di problemi col file il codice vuota se il file � stato aperto con successo. Altrimenti, in caso di problemi col file il codice
dovrebbe usare nextfile per saltarlo. Se non lo fa, gawk emette il solit o errore fatale per i file che dovrebbe usare nextfile per saltarlo. Se non lo fa, gawk emette il solit o errore fatale per i file che
non possono essere aperti. non possono essere aperti.
Per i criteri del tipo /espressione regolare/ l'azione associata � esegui ta per ogni record in input che Per i criteri del tipo /espressione regolare/ l'azione associata � esegui ta per ogni record in input che
corrisponde all'espressione regolare. Le espressioni regolari hanno la stessa forma di quelle di corrisponde all'espressione regolare. Le espressioni regolari hanno la stessa forma di quelle di
egrep(1), e sono descritte pi� avanti. egrep(1), e sono descritte pi� avanti.
In un'espressione relazionale si pu� usare qualsiasi operatore definito nella sezione sulla azioni, pi� In un'espressione relazionale si pu� usare qualsiasi operatore definito nella sezione sulla azioni, pi�
avanti. Generalmente l'espressione relazionale � utilizzata per verifica re se certi campi siano indi- avanti. Generalmente l'espressione relazionale � utilizzata per verifica re se certi campi siano indi-
skipping to change at line 853 skipping to change at line 889
\c Corrisponde al carattere c considerato letteralmente. \c Corrisponde al carattere c considerato letteralmente.
. Corrisponde a qualsiasi carattere, compreso "newline". . Corrisponde a qualsiasi carattere, compreso "newline".
^ Corrisponde all'inizio di una stringa. ^ Corrisponde all'inizio di una stringa.
$ Corrisponde alla fine di una stringa. $ Corrisponde alla fine di una stringa.
[abc...] Una lista di caratteri: corrisponde a uno qualsiasi dei caratt eri abc.... Si possono includ- [abc...] Una lista di caratteri: corrisponde a uno qualsiasi dei caratt eri abc.... Si possono includ-
ere intervalli di caratteri separandoli con un trattino. ere intervalli di caratteri separandoli con un trattino. Per
aggiungere alla lista il carat-
tere trattino, inserirlo all'inizio o alla fine della lista st
essa.
[^abc...] Una lista di caratteri negata: corrisponde a qualsiasi caratte re eccetto abc.... [^abc...] Una lista di caratteri negata: corrisponde a qualsiasi caratte re eccetto abc....
r1|r2 Alternativa: corrisponde a r1 oppure a r2. r1|r2 Alternativa: corrisponde a r1 oppure a r2.
r1r2 Concatenazione: corrisponde a r1, e poi r2. r1r2 Concatenazione: corrisponde a r1, e poi r2.
r+ Corrisponde a una o pi� r. r+ Corrisponde a una o pi� r.
r* Corrisponde a zero o pi� r. r* Corrisponde a zero o pi� r.
r? Corrisponde a zero o una r. r? Corrisponde a zero o una r.
(r) Raggruppamento: corrisponde a r. (r) Raggruppamento: corrisponde a r.
r{n} r{n}
r{n,} r{n,}
r{n,m} Uno o due numeri racchiusi tra parentesi graffe indicano una r{n,m} Uno o due numeri racchiusi tra parentesi graffe indicano una e
espressione di intervallo. Se spressione di intervallo. Se
c'� un numero tra parentesi graffe, l'espressione regolare che c'� un numero tra parentesi graffe, l'espressione regolare ch
precede r � ripetuta n volte. e precede r � ripetuta n volte.
Se tra parentesi graffe ci sono due numeri separati da virgola , r � ripetuta da n ad m volte. Se tra parentesi graffe ci sono due numeri separati da virgola , r � ripetuta da n ad m volte.
Se c'� un numero seguito da una virgola, r � ripetuta almeno n volte. Se c'� un numero seguito da una virgola, r � ripetuta almeno n volte.
\y Corrisponde alla stringa vuota all'inizio o alla fine di una p arola. \y Corrisponde alla stringa vuota all'inizio o alla fine di una p arola.
\B Corrisponde alla stringa vuota all'interno di una parola. \B Corrisponde alla stringa vuota all'interno di una parola.
\< Corrisponde alla stringa vuota all'inizio di una parola. \< Corrisponde alla stringa vuota all'inizio di una parola.
\> Corrisponde alla stringa vuota alla fine di una parola. \s Co rrisponde a qualsiasi spazio \> Corrisponde alla stringa vuota alla fine di una parola. \s Corrisponde a qualsiasi spazio
vuoto. vuoto.
\S Corrisponde a qualsiasi carattere che non sia uno spazio vuoto . \S Corrisponde a qualsiasi carattere che non sia uno spazio vuoto .
\w Corrisponde a un qualsiasi carattere che possa far parte di u na parola, cio� lettere, numeri \w Corrisponde a un qualsiasi carattere che possa far parte di un a parola, cio� lettere, numeri
o trattino basso). o trattino basso).
\W Corrisponde a un qualsiasi carattere che non possa far parte d i una parola. \W Corrisponde a un qualsiasi carattere che non possa far parte d i una parola.
\` Corrisponde alla stringa vuota all'inizio di una stringa. \` Corrisponde alla stringa vuota all'inizio di una stringa.
\' Corrisponde alla stringa vuota alla fine di una stringa. \' Corrisponde alla stringa vuota alla fine di una stringa.
Le sequenze di protezione valide all'interno delle costanti stringa (vede re Costanti di tipo stringa) Le sequenze di protezione valide all'interno delle costanti stringa (v edere Costanti di tipo stringa)
sono ammesse anche nelle espressioni regolari. sono ammesse anche nelle espressioni regolari.
Le classi di caratteri sono una nuova funzionalit� introdotta nello Le classi di caratteri sono una nuova funzionalit� introdotta nello sta
standard POSIX. Una classe di ndard POSIX. Una classe di
caratteri � una speciale notazione per indicare liste di caratteri accomu caratteri � una speciale notazione per indicare liste di caratteri acco
nati da uno specifico attrib- munati da uno specifico attrib-
uto, dove per� i caratteri veri e propri possono variare a seconda della nazione e del set di caratteri. uto, dove per� i caratteri veri e propri possono variare a seconda della nazione e del set di caratteri.
Per esempio, la nozione di "carattere alfabetico" valida negli Stati Unit i � diversa da quella valida in Per esempio, la nozione di "carattere alfabetico" valida negli Stati Unit i � diversa da quella valida in
Francia. Francia.
Una classe di caratteri � ammessa solo all'interno delle parentesi quad Una classe di caratteri � ammessa solo all'interno delle parentesi quadre
re di una lista di caratteri di di una lista di caratteri di
una espressione regolare. Le classi di caratteri si rappresentano con [: una espressione regolare. Le classi di caratteri si rappresentano con
, una parola chiave indicante [:, una parola chiave indicante
la classe, e :]. Queste sono le classi di caratteri definite dallo stand ard POSIX: la classe, e :]. Queste sono le classi di caratteri definite dallo stand ard POSIX:
[:alnum:] Caratteri alfanumerici. [:alnum:] Caratteri alfanumerici.
[:alpha:] Caratteri alfabetici. [:alpha:] Caratteri alfabetici.
[:blank:] Caratteri "spazio" e "tab". [:blank:] Caratteri "spazio" e "tab".
[:cntrl:] Caratteri di controllo. [:cntrl:] Caratteri di controllo.
[:digit:] Caratteri numerici. [:digit:] Caratteri numerici.
[:graph:] Caratteri che siano sia stampabili che visibili (uno spazi o � stampabile ma non visibile, [:graph:] Caratteri che siano sia stampabili che visibili (uno spazio � stampabile ma non visibile,
mentre a � entrambe le cose). mentre a � entrambe le cose).
[:lower:] Caratteri alfabetici minuscoli. [:lower:] Caratteri alfabetici minuscoli.
[:print:] Caratteri stampabili (cio� caratteri che non siano di controll o). [:print:] Caratteri stampabili (cio� caratteri che non siano di controll o).
[:punct:] Caratteri di punteggiatura (cio� caratteri che non siano n� le ttere, n� cifre, n� caratteri [:punct:] Caratteri di punteggiatura (cio� caratteri che non siano n� lettere, n� cifre, n� caratteri
di controllo, n� caratteri di spaziatura). di controllo, n� caratteri di spaziatura).
[:space:] Caratteri di spaziatura (come lo spazio, "tab", "formfeed", pe r citarne solo alcuni). [:space:] Caratteri di spaziatura (come lo spazio, "tab", "formfeed", pe r citarne solo alcuni).
[:upper:] Caratteri alfabetici maiuscoli. [:upper:] Caratteri alfabetici maiuscoli.
[:xdigit:] Cifre esadecimali. [:xdigit:] Cifre esadecimali.
Per fare un esempio, prima dell'introduzione dello standard POSIX si sarebbe dovuto scrivere Per fare un esempio, prima dell'introduzione dello standard POSIX si sarebbe dovuto scrivere
/[A-Za-z0-9]/ per individuare caratteri alfanumerici. Qualora il set di /[A-Za-z0-9]/ per individuare caratteri alfanumerici. Qualora il set d
caratteri vigente avesse com- i caratteri vigente avesse com-
preso altri caratteri alfanumerici, l'espressione non li avrebbe riconos preso altri caratteri alfanumerici, l'espressione non li avrebbe riconosc
ciuti, e se il set di caratteri iuti, e se il set di caratteri
fosse rappresentato in modo diverso da ASCII, non sarebbero riconosciuti fosse rappresentato in modo diverso da ASCII, non sarebbero riconosci
neanche i caratteri alfanu- uti neanche i caratteri alfanu-
merici ASCII. Con le classi di caratteri POSIX, si pu� scrivere /[[:al merici ASCII. Con le classi di caratteri POSIX, si pu� scrivere /[[:alnu
num:]]/, che trover� corrispon- m:]]/, che trover� corrispon-
denza con i caratteri alfabetici e numerici previsti dal set di caratteri in uso, qualunque esso sia. denza con i caratteri alfabetici e numerici previsti dal set di caratteri in uso, qualunque esso sia.
Nelle liste di caratteri possono comparire due sequenze speciali aggiunti ve. Esse si applicano ai set di Nelle liste di caratteri possono comparire due sequenze speciali aggiunti ve. Esse si applicano ai set di
caratteri non ASCII, i quali possono comprendere sia simboli singoli (c caratteri non ASCII, i quali possono comprendere sia simboli singoli (chi
hiamati elementi di collazione) amati elementi di collazione)
rappresentati da pi� di un carattere, sia gruppi di caratteri tra loro eq rappresentati da pi� di un carattere, sia gruppi di caratteri tra loro
uivalenti ai fini della col- equivalenti ai fini della col-
lazione o dell'ordinamento. Per esempio, in francese una “e” semplice lazione o dell'ordinamento. Per esempio, in francese una “e” semplice ed
ed una “e`” con l'accento grave una “e`” con l'accento grave
sono equivalenti. sono equivalenti.
Simboli di collazione Simboli di collazione
Un simbolo di collazione � un elemento di confronto costituito da Un simbolo di collazione � un elemento di confronto costituito d
pi� di un carattere racchiuso a pi� di un carattere racchiuso
tra [. e .]. Per esempio, se ch � un elemento di collazione, a tra [. e .]. Per esempio, se ch � un elemento di collazione, all
llora [[.ch.]] � l'espressione ora [[.ch.]] � l'espressione
regolare che lo individua, mentre [ch] � un'espressione regolare c he individua o il carattere c o regolare che lo individua, mentre [ch] � un'espressione regolare c he individua o il carattere c o
il carattere h. il carattere h.
Classi di Equivalenza Classi di Equivalenza
Una classe di equivalenza � un nome, dipendente dalla localizza Una classe di equivalenza � un nome, dipendente dalla localizzazio
zione, associato a una lista di ne, associato a una lista di
caratteri tra loro equivalenti. Il nome � racchiuso tra [= e = caratteri tra loro equivalenti. Il nome � racchiuso tra [
]. Per esempio, il nome e = e =]. Per esempio, il nome e
potrebbe essere usato per rappresentare globalmente i caratte potrebbe essere usato per rappresentare globalmente i caratteri “e
ri “e”, “´”, ed “`”. In questo ”, “´”, ed “`”. In questo
caso, [[=e]] � un'espressione regolare compatibile con uno qualsia si dei caratteri e, �, ed �. caso, [[=e]] � un'espressione regolare compatibile con uno qualsia si dei caratteri e, �, ed �.
Queste funzionalit� sono molto apprezzabili quando la lingua corrente non Queste funzionalit� sono molto apprezzabili quando la lingua corrente n
� l'inglese. Le funzioni di on � l'inglese. Le funzioni di
libreria che gawk usa nella valutazione di espressioni regolari riconos libreria che gawk usa nella valutazione di espressioni regolari riconosco
cono attualmente solo le classi no attualmente solo le classi
di caratteri POSIX, non i simboli di collazione n� le classi di equivalen za. di caratteri POSIX, non i simboli di collazione n� le classi di equivalen za.
Gli operatori \y, \B, \<, \>, \w, \W, \`, ed \' sono specifici di gawk; q ueste estensioni sono possibili Gli operatori \y, \B, \<, \>, \w, \W, \`, ed \' sono specifici di gawk; q ueste estensioni sono possibili
grazie alle facilitazioni derivanti dall'uso della libreria "regexp" di G NU. grazie alle facilitazioni derivanti dall'uso della libreria "regexp" di G NU.
Quelle che seguono sono le opzioni della riga di comando che controllan o come gawk interpreta i carat- Quelle che seguono sono le opzioni della riga di comando che controllano come gawk interpreta i carat-
teri nelle espressioni regolari. teri nelle espressioni regolari.
Nessuna opzione Nessuna opzione
In assenza di indicazioni, gawk mette a disposizione tutte le faci litazioni caratteristiche delle In assenza di indicazioni, gawk mette a disposizione tutte le faci litazioni caratteristiche delle
espressioni regolari POSIX e degli operatori GNU descritti pi� sop ra. espressioni regolari POSIX e degli operatori GNU descritti pi� sop ra.
--posix --posix
Sono riconosciute solo le espressioni regolari POSIX, non gli operatori GNU (per esempio, \w Sono riconosciute solo le espressioni regolari POSIX, non gli ope ratori GNU (per esempio, \w
individua il carattere w). individua il carattere w).
--traditional --traditional
Le espressioni regolari sono valutate secondo le regole del tradiz ionale awk per . Gli operatori Le espressioni regolari sono valutate secondo le regole del tradiz ionale awk per . Gli operatori
GNU non hanno un significato speciale, e le espressioni di inte GNU non hanno un significato speciale, e le espressioni di interva
rvallo non sono disponibili. I llo non sono disponibili. I
caratteri descritti da sequenze ottali o esadecimali sono trattati caratteri descritti da sequenze ottali o esadecimali sono trattat
letteralmente, anche se rapp- i letteralmente, anche se rapp-
resentano metacaratteri di espressioni regolari. resentano metacaratteri di espressioni regolari.
--re-interval --re-interval
Sono permesse le espressioni di intervallo, anche se � stato speci ficato --traditional. Sono permesse le espressioni di intervallo, anche se � stato speci ficato --traditional.
Azioni Azioni
Le istruzioni di azione sono racchiuse tra parentesi graffe, { e }. Le istruzioni di azione sono racchiuse tra parentesi graffe, { e }. L
L'insieme delle istruzioni di 'insieme delle istruzioni di
azione � formato dalle solite istruzioni di assegnamento, condizionali e azione � formato dalle solite istruzioni di assegnamento, condizionali
iterative presenti nella mag- e iterative presenti nella mag-
gior parte dei linguaggi. Gli operatori, le strutture di controllo gior parte dei linguaggi. Gli operatori, le strutture di controllo e l
e le istruzioni di input/output e istruzioni di input/output
ricalcano quelli corrispondenti nel linguaggio C. ricalcano quelli corrispondenti nel linguaggio C.
Operatori Operatori
Gli operatori di AWK, in ordine decrescente di precedenza, sono Gli operatori di AWK, in ordine decrescente di precedenza, sono
(...) Raggruppamento (...) Raggruppamento
$ Riferimento a campi. $ Riferimento a campi.
++ -- Incremento e decremento, sia prefisso che suffisso. ++ -- Incremento e decremento, sia prefisso che suffisso.
skipping to change at line 1019 skipping to change at line 1056
+ - Addizione e sottrazione. + - Addizione e sottrazione.
spazio Concatenazione di stringhe. spazio Concatenazione di stringhe.
| |& I/O proveniente dall'output di comandi [pipe] per getline, pr int, e printf. | |& I/O proveniente dall'output di comandi [pipe] per getline, pr int, e printf.
< > <= >= == != < > <= >= == !=
I normali operatori di relazione. I normali operatori di relazione.
~ !~ Corrispondenza tra espressioni regolari, e nessuna corr ispondenza. NOTA: Non usare ~ !~ Corrispondenza tra espressioni regolari, e nessuna corr ispondenza. NOTA: Non usare
un'espressione regolare costante (/foo/) come operando di un'espressione regolare costante (/foo/) come operando
sinistra di ~ o !~. Usare di sinistra di ~ o !~. Usare
un'espressione regolare solo come operando di destra. L'esp un'espressione regolare solo come operando di destra. L'espr
ressione /foo/ ~ exp equivale a essione /foo/ ~ exp equivale a
richiedere (($0 ~ /foo/) ~ exp). Di solito non � questo, que l che si vorrebbe. richiedere (($0 ~ /foo/) ~ exp). Di solito non � questo, que l che si vorrebbe.
in Controllo di appartenenza a un vettore. in Controllo di appartenenza a un vettore.
&& AND logico. && AND logico.
|| OR logico. || OR logico.
?: L'espressione condizionale in stile C. Ha la forma espressio ?: L'espressione condizionale in stile C. Ha la forma espres
ne1 ? espressione2 : espres- sione1 ? espressione2 : espres-
sione3. Se espressione1 � vera, il valore dell'espressio sione3. Se espressione1 � vera, il valore dell'espressione
ne � espressione2, altrimenti � � espressione2, altrimenti �
espressione3. Viene calcolata solo una delle due espressioni espressione2 ed espressione3 espressione3. Viene calcolata solo una delle due espressioni espressione2 ed espressione3
= += -= *= /= %= ^= = += -= *= /= %= ^=
Assegnamento. Sono permessi sia l'assegnamento assoluto (var = valore) che quello con opera- Assegnamento. Sono permessi sia l'assegnamento assoluto (var = valore) che quello con opera-
tore (le altre forme). tore (le altre forme).
Istruzioni di controllo Istruzioni di controllo
Le istruzioni di controllo sono le seguenti: Le istruzioni di controllo sono le seguenti:
if (condizione) istruzione [ else istruzione ] if (condizione) istruzione [ else istruzione ]
skipping to change at line 1060 skipping to change at line 1097
{ istruzione } { istruzione }
switch (espressione) { switch (espressione) {
case valore|espressione_regolare : istruzione case valore|espressione_regolare : istruzione
... ...
[ default: istruzione ] [ default: istruzione ]
} }
Istruzioni di I/O Istruzioni di I/O
Le istruzioni di input/output sono le seguenti: Le istruzioni di input/output sono le seguenti:
close(file [, come]) Chiude un file, una pipe o un coprocesso. close(file [, come]) Chiude un file, una pipe o un coprocesso.
Il parametro facoltativo come Il parametro facoltativo come
dovrebbe essere usato solo per chiudere u dovrebbe essere usato solo per chiuder
n'estremit� di una pipe bi- e un'estremit� di una pipe bi-
direzionale aperta con un coprocesso. Il v alore dev'essere una stringa, o direzionale aperta con un coprocesso. Il v alore dev'essere una stringa, o
"to" o "from". "to" o "from".
getline Imposta $0 usando la successiva riga di inp ut; imposta NF, NR, FNR, RT. getline Imposta $0 usando la successiva riga di inp ut; imposta NF, NR, FNR, RT.
getline <file Imposta $0 usando la successiva riga di fil e; imposta NF, RT. getline <file Imposta $0 usando la successiva riga di fil e; imposta NF, RT.
getline variabile Imposta variabile dalla successiva riga di input; imposta NR, FNR, RT. getline variabile Imposta variabile dalla successiva riga di input; imposta NR, FNR, RT.
getline variabile <file Imposta variabile dalla successiva riga di file; imposta RT. getline variabile <file Imposta variabile dalla successiva riga di file; imposta RT.
comando | getline [variabile] Esegue comando dirigendo l'output [del coma ndo] o in $0 o in variabile, comando | getline [variabile] Esegue comando dirigendo l'output [del c omando] o in $0 o in variabile,
come sopra, e RT. come sopra, e RT.
comando |& getline [variabile] comando |& getline [variabile]
Esegue comando come un coprocesso dirigendo l'output [del comando] o in $0 Esegue comando come un coprocesso dirigendo l'output [del comando] o in $0
o in variabile, come sopra, e RT. I coproc o in variabile, come sopra, e RT. I copr
essi sono un'estensione gawk. ocessi sono un'estensione gawk.
(il comando pu� anche essere un socket. (Il comando pu� anche essere un socket. Ve
Vedere la sottosezione Nomi di dere la sottosezione Nomi di
file speciali, pi� avanti.) file speciali, pi� avanti.)
next Cessa l'elaborazione della riga di input co next Cessa l'elaborazione della riga di input
rrente. � letta la successiva, corrente. Legge la successiva
e l'elaborazione ricomincia dal primo cr riga di input, e l'elaborazione ricomincia
iterio di ricerca del programma a partire dal primo criterio di
AWK. Se non ci sono pi� righe in input, ricerca del programma AWK. Se non ci sono
gawk esegue i comandi delle pi� righe in input, gawk esegue
regole END, se presenti. i comandi di ogni regola END, se presenti.
nextfile Cessa l'elaborazione del file di input c nextfile Cessa l'elaborazione del file di input corr
orrente. La prossima riga sar� ente. La prossima riga letta
letta dal file di input successivo. Sono a proverr� dal file di input successivo. Ag
ggiornati FILENAME e ARGIND, giorna FILENAME e ARGIND, reim-
FNR � reimpostato a 1, e l'elaborazione posta FNR a 1, e l'elaborazione riprende da
riprende dal primo criterio di l primo criterio di ricerca del
ricerca del programma AWK. Quando non ci s programma AWK. Se non ci sono pi� righe
ono pi� righe in input, gawk in input, gawk esegue i comandi
esegue i comandi delle regole ENDFILE ed EN di ogni regola ENDFILE ed END, se presenti.
D, se presenti.
print Stampa il record corrente. Alla fine dell a riga in output viene aggiunto print Stampa il record corrente. Alla fine della riga in output viene aggiunto
il valore della variabile ORS. il valore della variabile ORS.
print lista-espressioni Stampa le espressioni indicate. Ogni espre print lista-espressioni Stampa le espressioni indicate. Ogni es
ssione � separata dal valore pressione � separata dal valore
della variabile OFS. La riga prodotta ter della variabile OFS. La riga prodotta term
mina col valore della variabile ina col valore della variabile
ORS. ORS.
print lista-espressioni >file Stampa le espressioni indicate su file. Og print lista-espressioni >file Stampa le espressioni indicate su file.
ni espressione � separata dal Ogni espressione � separata dal
valore della variabile OFS. La riga pr valore della variabile OFS. La riga prodot
odotta termina col valore della ta termina col valore della
variabile ORS. variabile ORS.
printf fmt, lista-espressioni Stampa secondo formato. Vedere L'istruzion e printf , pi� avanti. printf fmt, lista-espressioni Stampa secondo formato. Vedere L'istruzion e printf , pi� avanti.
printf fmt, lista-espressioni >file printf fmt, lista-espressioni >file
Stampa secondo formato su file. Stampa secondo formato su file.
system(riga-di-comando) Esegue il comando riga-di-comando, e ne res system(riga-di-comando) Esegue il comando riga-di-comando, e ne
tituisce il valore d'uscita. restituisce il valore d'uscita.
(pu� non essere disponibile sui sistemi no (pu� non essere disponibile sui sistemi non
n-POSIX). Si veda GAWK: Effec- -POSIX). Si veda GAWK: Effec-
tive AWK Programming per tutti i dettagli s ullo stato d'uscita. tive AWK Programming per tutti i dettagli s ullo stato d'uscita.
fflush([file]) Scarica il contenuto di tutti i buffer ass fflush([file]) Scarica il contenuto di tutti i buffe
ociati ai file o alle pipe r associati ai file o alle pipe
aperti in scrittura file. Se file non � aperti in scrittura file. Se file non � sp
specificato o ha per valore la ecificato o ha per valore la
stringa nulla, l'operazione � eseguita su t utti i file e le pipe aperti in stringa nulla, l'operazione � eseguita su t utti i file e le pipe aperti in
scrittura. scrittura.
Sono permessi anche altri tipi di ridirezione in scrittura per print e pr intf. Sono permessi anche altri tipi di ridirezione in scrittura per print e pr intf.
print ... >> file print ... >> file
Aggiunge righe alla fine di file. Aggiunge l'output alla fine di file.
print ... | comando print ... | comando
Scrive su una pipe. Scrive su una pipe.
print ... |& comando print ... |& comando
Invia dati a un coprocesso o a un socket. (Vedere anche la sott osezione Nomi di file speciali, Invia dati a un coprocesso o a un socket. (Vedere anche la sottos ezione Nomi di file speciali,
pi� avanti). pi� avanti).
Il comando getline restituisce 1 se tutto va bene, zero in caso di fine f Il comando getline restituisce 1 se tutto va bene, zero in caso di fin
ile, e -1 in caso di errore. e file, e -1 in caso di errore.
Se il valore di errno(3) indica che l'operazione di I/O pu� essere Se il valore di errno(3) indica che l'operazione di I/O pu� essere r
ritentata, e PROCINFO["input", itentata, e PROCINFO["input",
"RETRY"] � stato impostato, viene restituito il valore -2 invece che -1 e "RETRY"] � stato impostato, viene restituito il valore -2 invece che -1
ulteriori chiamate a getline e ulteriori chiamate a getline
possono essere effettuate. A fronte di un errore ERRNO � impostato a un possono essere effettuate. A fronte di un errore ERRNO � impostato a una
a stringa che descrive il prob- stringa che descrive il prob-
lema. lema.
NOTA: L'insuccesso nell'apertura di un socket bidirezionale genera un err ore non fatale che viene resti- NOTA: L'insuccesso nell'apertura di un socket bidirezionale genera un err ore non fatale che viene resti-
tuito alla funzione chiamante. Se si sta usando una pipe, un coprocesso , o un socket per alimentare la tuito alla funzione chiamante. Se si sta usando una pipe, un coprocesso, o un socket per alimentare la
getline, o da print o printf all'interno di un ciclo, si deve usare close () per creare una nuova istanza getline, o da print o printf all'interno di un ciclo, si deve usare close () per creare una nuova istanza
del comando o del socket. AWK non chiude automaticamente pipe, soc ket, o coprocessi quando questi del comando o del socket. AWK non chiude automaticamente pipe, socket, o coprocessi quando questi
restituiscono EOF. restituiscono EOF.
L'istruzione printf L'istruzione printf
Le versioni di AWK dell'istruzione printf e della funzione sprintf() (v edi pi� avanti) accettano i Le versioni di AWK dell'istruzione printf e della funzione sprintf( ) (vedi pi� avanti) accettano i
seguenti formati di richiesta conversione: seguenti formati di richiesta conversione:
%a, %A Un numero a virgola mobile nel formato [-]0xh.hhhhp+-dd (formato esadecimale a virgola mobile di %a, %A Un numero a virgola mobile nel formato [-]0xh.hhhhp+-dd (formato esadecimale a virgola mobile di
C99). Per %A, si usano lettere maiuscole invece che lettere minu scole. C99). Per %A, si usano lettere maiuscole invece che lettere minu scole.
%c Un singolo carattere. Se l'argomento usato per %c � numerico, � considerato come un carattere e %c Un singolo carattere. Se l'argomento usato per %c � numerico, � considerato come un carattere e
stampato. Altrimenti, si suppone che l'argomento sia una stringa , e ne � stampato solo il primo stampato. Altrimenti, si suppone che l'argomento sia una stringa , e ne � stampato solo il primo
carattere. carattere.
%d, %i Un numero decimale (solo la sua parte intera). %d, %i Un numero decimale (solo la sua parte intera).
%e, %E Un numero in virgola mobile nella forma [-]d.dddddde[+-]dd. Il f ormato %E usa E anzich� e. %e, %E Un numero in virgola mobile nella forma [-]d.dddddde[+-]dd. Il f ormato %E usa E anzich� e.
%f, %F Un numero in virgola mobile nella forma [-]ddd.dddddd. Se la lib %f, %F Un numero in virgola mobile nella forma [-]ddd.dddddd. Se la l
reria di sistema lo supporta, ibreria di sistema lo supporta,
il formato %F � pure disponibile. Si comporta come %f, ma usa il formato %F � pure disponibile. Si comporta come %f, ma usa le
lettere maiuscole per i valori ttere maiuscole per i valori
speciali “non un numero” e “infinito”. Se %F non � disponibile ga wk usa %f. speciali “non un numero” e “infinito”. Se %F non � disponibile ga wk usa %f.
%g, %G Usa la conversione %e o %f, (la pi� corta delle due), sopprimendo gli zeri non significativi. %g, %G Usa la conversione %e o %f, (la pi� corta delle due), sopprime ndo gli zeri non significativi.
Il formato %G usa %E invece che %e. Il formato %G usa %E invece che %e.
%o Un numero ottale senza segno (anche questo intero). %o Un numero ottale senza segno (anche questo intero).
%u Un numero decimale senza segno (pure questo intero). %u Un numero decimale senza segno (pure questo intero).
%s Una stringa di caratteri. %s Una stringa di caratteri.
%x, %X Un numero esadecimale senza segno (un intero). Il formato %X usa ABCDEF invece di abcdef. %x, %X Un numero esadecimale senza segno (un intero). Il formato %X usa ABCDEF invece di abcdef.
%% Un singolo carattere %; non c'� alcuna conversione di argomenti. %% Un singolo carattere % ; non c'� alcuna conversione di argomenti.
Alcuni ulteriori parametri facoltativi possono comparire fra il % e l a lettera che indica il tipo di Alcuni ulteriori parametri facoltativi possono comparire fra il % e la le ttera che indica il tipo di
visualizzazione richiesta: visualizzazione richiesta:
n$ Usa l'argomento n-esimo a questo punto della formattazione. Quest n$ Usa l'argomento n-esimo a questo punto della formattazione. Q
o � detto uno specificatore uesto � detto uno specificatore
posizionale ed � pensato per usato principalmente nelle versioni posizionale ed � pensato per usato principalmente nelle versioni t
tradotte delle stringhe di for- radotte delle stringhe di for-
mattazione, non nel testo originale [normalmente in inglese] di un mattazione, non nel testo originale [normalmente in inglese] di
programma AWK. Si tratta di un programma AWK. Si tratta di
un'estensione gawk un'estensione gawk
- L'espressione va allineata a sinistra all'interno del proprio camp o. - L'espressione va allineata a sinistra all'interno del proprio camp o.
spazio Nelle conversioni numeriche, inserire uno spazio prima dei val ori positivi, e un segno "meno" spazio Nelle conversioni numeriche, inserire uno spazio prima dei valori positivi, e un segno "meno"
prima di quelli negativi. prima di quelli negativi.
+ Il segno "pi�" usato prima del modificatore di dimensione (vedi pi � avanti) indica che nelle con- + Il segno "pi�" usato prima del modificatore di dimensione (vedi pi � avanti) indica che nelle con-
versioni numeriche il segno deve essere sempre presente, anche se il valore da riportare � posi- versioni numeriche il segno deve essere sempre presente, anche se il valore da riportare � posi-
tivo. + annulla l'effetto del modificatore "spazio". tivo. + annulla l'effetto del modificatore "spazio".
# Usa una “forma alternativa” per alcune lettere di controllo. Asso ciato a %o, aggiunge uno zero # Usa una “forma alternativa” per alcune lettere di controllo. As sociato a %o, aggiunge uno zero
iniziale. Con %x, e %X, aggiunge all'inizio rispettivamente 0x o 0X in caso di valore diverso da iniziale. Con %x, e %X, aggiunge all'inizio rispettivamente 0x o 0X in caso di valore diverso da
zero. Con %e, %E, %f e %F, il risultato conterr� sempre il separa tore decimale. Con %g, e %G, zero. Con %e, %E, %f e %F, il risultato conterr� sempre il sepa ratore decimale. Con %g, e %G,
gli zeri in coda non sono rimossi dal risultato. gli zeri in coda non sono rimossi dal risultato.
0 Uno 0 (zero) iniziale svolge una funzione di flag, per indicare 0 Uno 0 (zero) iniziale svolge una funzione di flag, per indicare ch
che l'output deve essere prece- e l'output deve essere prece-
duto da zeri anzich� da spazi. Questo vale solo per i formati num duto da zeri anzich� da spazi. Questo vale solo per i formati nu
erici in output.. Questo flag merici in output.. Questo flag
ha effetto solo quando la larghezza del campo � maggiore di quella necessaria a contenere il val- ha effetto solo quando la larghezza del campo � maggiore di quella necessaria a contenere il val-
ore da stampare. ore da stampare.
' Un apice semplice chiede a gawk di inserire il separatore delle mi ' Un apice semplice chiede a gawk di inserire il separatore delle
gliaia proprio della localiz- migliaia proprio della localiz-
zazione, come pure di usare il separatore decimale proprio della zazione, come pure di usare il separatore decimale proprio della l
localizzazione per i numeri in ocalizzazione per i numeri in
virgola mobile. � richiesto che la libreria C supporti correttame virgola mobile. � richiesto che la libreria C supporti corret
nte la localizzazione e che tamente la localizzazione e che
questa sia stata definita correttamente. questa sia stata definita correttamente.
ampiezza ampiezza
Il numero dovrebbe occupare questo numero di byte. Il numero � normalmente preceduto da spazi. Il numero dovrebbe occupare questo numero di byte. Il numero � no rmalmente preceduto da spazi.
In presenza del flag 0, � invece preceduto da zeri. In presenza del flag 0, � invece preceduto da zeri.
.prec Un numero indicante la precisione da utilizzare nella stampa. Con i formati %e, %E, %f, e %F, .prec Un numero indicante la precisione da utilizzare nella stampa. Con i formati %e, %E, %f, e %F,
specifica il numero di cifre che dovranno comparire a destra del s eparatore decimale. Con i for- specifica il numero di cifre che dovranno comparire a destra del s eparatore decimale. Con i for-
mati %g, e %G, specifica il massimo numero di cifre significative. Con i formati %d, %i, %o, %u, mati %g, e %G, specifica il massimo numero di cifre significative. Con i formati %d, %i, %o, %u,
%x, e %X, specifica il numero minimo di cifre da stampare. Per %x, e %X, specifica il numero minimo di cifre da stampare. Per il
%s, specifica il massimo numero formato %s, specifica il mas-
di caratteri della stringa che dovrebbero essere stampati. simo numero di caratteri della stringa che dovrebbero essere stamp
ati.
La definizione dinamica di ampiezza e prec prevista dalle funzioni printf La definizione dinamica di ampiezza e prec prevista dalle funzioni print
() dell'ISO C sono supportate. f() dell'ISO C sono supportate.
Un * al posto sia di ampiezza che di prec far� s� che i loro valori sian Un * al posto sia di ampiezza che di prec far� s� che i loro valori siano
o presi dalla lista degli argo- presi dalla lista degli argo-
menti di printf o sprintf(). Per usare uno specificatore di posizione co menti di printf o sprintf(). Per usare uno specificatore di posizione
n una larghezza o una preci- con una larghezza o una preci-
sione dinamica inserire il contatore$ dopo il carattere * nella stringa sione dinamica inserire il contatore$ dopo il carattere * nella stringa d
di formattazione. Per esempio, i formattazione. Per esempio,
"%3$*2$.*1$s". "%3$*2$.*1$s".
Nomi di file speciali Nomi di file speciali
effettuando delle ridirezioni di print o printf in un file, o attravers effettuando delle ridirezioni di print o printf in un file, o attr
o getline da un file, gawk averso getline da un file, gawk
riconosce internamente alcuni nomi di file speciali, che permettono di riconosce internamente alcuni nomi di file speciali, che permettono di ac
accedere a descrittori di file cedere a descrittori di file
gi� aperti ereditati dal processo genitore di gawk (la shell, solitamente ). Questi nomi di file possono gi� aperti ereditati dal processo genitore di gawk (la shell, solitamente ). Questi nomi di file possono
anche essere usati nella riga di comando per designare dei file di dati. I nomi di file sono: anche essere usati nella riga di comando per designare dei file di dati. I nomi di file sono:
- Lo standard input. - Lo standard input.
/dev/stdin Lo standard input. /dev/stdin Lo standard input.
/dev/stdout Lo standard output. /dev/stdout Lo standard output.
/dev/stderr Lo standard error in output. /dev/stderr Lo standard error in output.
skipping to change at line 1246 skipping to change at line 1283
/dev/fd/n Il file associato al descrittore di file aperto n. /dev/fd/n Il file associato al descrittore di file aperto n.
Questi ultimi sono utili in particolare per i messaggi di errore. Per ese mpio: Questi ultimi sono utili in particolare per i messaggi di errore. Per ese mpio:
print "Ti � andata male!" > "/dev/stderr" print "Ti � andata male!" > "/dev/stderr"
laddove, per ottenere lo stesso effetto, si sarebbe stati costretti a scr ivere laddove, per ottenere lo stesso effetto, si sarebbe stati costretti a scr ivere
print "Ti � andata male!" | "cat 1>&2" print "Ti � andata male!" | "cat 1>&2"
I seguenti nomi di file speciali si possono usare con l'operatore |& d i coprocesso per creare connes- I seguenti nomi di file speciali si possono usare con l'operatore |& di c oprocesso per creare connes-
sioni di rete TCP/IP: sioni di rete TCP/IP:
/inet/tcp/lport/rhost/rport /inet/tcp/lport/rhost/rport
/inet4/tcp/lport/rhost/rport /inet4/tcp/lport/rhost/rport
/inet6/tcp/lport/rhost/rport /inet6/tcp/lport/rhost/rport
File per una connessione TCP/IP su una porta locale lport verso un host remoto rhost sulla porta File per una connessione TCP/IP su una porta locale lport verso u n host remoto rhost sulla porta
remota rport. Si usi la porta numero 0 Per permettere al sistema di scegliere una porta. Si usi remota rport. Si usi la porta numero 0 Per permettere al sistema di scegliere una porta. Si usi
/inet4 per richiedere una connessione IPv4, e /inet6 per richieder e una connessione IPv6. Speci- /inet4 per richiedere una connessione IPv4, e /inet6 per richieder e una connessione IPv6. Speci-
ficando semplicemente /inet usa quello predefinito del sistema (mo ficando semplicemente /inet usa quello predefinito del sistema (mo
lto probabilmente sar� IPv4). lto probabilmente IPv4). Si
pu� usare solo con l'operatore bidirezionale di I/O |& .
/inet/udp/lport/rhost/rport /inet/udp/lport/rhost/rport
/inet4/udp/lport/rhost/rport /inet4/udp/lport/rhost/rport
/inet6/udp/lport/rhost/rport /inet6/udp/lport/rhost/rport
Come sopra, ma usando porte UDP/IP invece che TCP/IP. Come sopra, ma usando porte UDP/IP invece che TCP/IP.
Funzioni numeriche Funzioni numeriche
AWK ha le seguenti funzioni aritmetiche predefinite: AWK ha le seguenti funzioni aritmetiche predefinite:
atan2(y, x) Restituisce l'arcotangente di y/x in radianti. atan2(y, x) Restituisce l'arcotangente di y/x in radianti.
skipping to change at line 1463 skipping to change at line 1501
valori degli argomenti della lista degli argoment i. Gli argomenti devono essere valori degli argomenti della lista degli argoment i. Gli argomenti devono essere
almeno due. almeno due.
rshift(val, contatore) Restituisce il valore di val, spostato a destra d i contatore bit. rshift(val, contatore) Restituisce il valore di val, spostato a destra d i contatore bit.
xor(v1, v2 [, ...]) Restituisce il risultato derivante dall'applicazi one della funzione booleana XOR xor(v1, v2 [, ...]) Restituisce il risultato derivante dall'applicazi one della funzione booleana XOR
bit per bit ai valori degli argomenti della lista degli argomenti. Gli argo- bit per bit ai valori degli argomenti della lista degli argomenti. Gli argo-
menti devono essere almeno due. menti devono essere almeno due.
Funzioni di tipo Funzioni di tipo
La funzione seguente va usata per vettori multidimensionali. Le seguenti funzioni forniscono informazioni relative agli argomenti che
vengono loro passati.
isarray(x)
Restituisce "Vero" se x � un vettore, altrimenti restituisce "Fals
o". [0 e la stringa nulla sig-
nificano "Falso". Qualsiasi altro valore sta per "Vero".]
possibile conoscere il tipo di qualsiasi variabile o elemento di vettor isarray(x) Restituisce "Vero" se xun vettore, altrimenti restituisce
e con la seguente funzione: "Falso". [0 e la stringa nulla
significano "Falso". Qualsiasi altro valore sta per "Vero".]
Questa funzione � destinata
principalmente a essere usata con elementi di vettori mul
tidimensionali, e con parametri
usati da funzioni.
typeof(x) typeof(x) Restituisce una stringa che indica il tipo di x. La stringa s
Return a string indicating the type of x. The string will be one ar� una di queste: "array",
of "array", "number", "regexp", "number", "regexp", "string", "strnum", "unassigned" o "undefi
"string", "strnum", or "undefined". ned".
Funzioni di internazionalizzazione Funzioni di internazionalizzazione
Le seguenti funzioni possono essere usate all'interno di un programma AW K per tradurre stringhe in fase Le seguenti funzioni possono essere usate all'interno di un programma AW K per tradurre stringhe in fase
di esecuzione del programma. Per informazioni pi� complete, vedere GAWK: Effective AWK Programming. di esecuzione del programma. Per informazioni pi� complete, vedere GAWK: Effective AWK Programming.
bindtextdomain(directory [, dominio]) bindtextdomain(directory [, dominio])
Specifica la directory in cui gawk cerca i file .gmo, nel caso non si trovino o non si possano Specifica la directory in cui gawk cerca i file .gmo, nel caso non si trovino o non si possano
mettere nelle directory ``standard'' (per esempio, in fase di tes t). Restituisce la directory a mettere nelle directory ``standard'' (per esempio, in fase di tes t). Restituisce la directory a
cui dominio � ``collegato''. cui dominio � ``collegato''.
Il valore predefinito per dominio � il valore della variabile TEXTDOMAIN. Se directory � Il valore predefinito per dominio � il valore della variabile TEXTDOMAIN. Se directory �
skipping to change at line 1562 skipping to change at line 1598
A partire dalla versione 4.1.2, questo vale per le funzioni definite dall 'utente, per quelle predefinite A partire dalla versione 4.1.2, questo vale per le funzioni definite dall 'utente, per quelle predefinite
e per le funzioni di estensione. e per le funzioni di estensione.
Se � stata data l'opzione --lint, gawk avvertir� in caso di chiamate a fu nzioni indefinite al momento Se � stata data l'opzione --lint, gawk avvertir� in caso di chiamate a fu nzioni indefinite al momento
della valutazione sintattica del programma anzich� durante l'esecuzion e. La chiamata di una funzione della valutazione sintattica del programma anzich� durante l'esecuzion e. La chiamata di una funzione
indefinita in fase di esecuzione � un errore fatale. indefinita in fase di esecuzione � un errore fatale.
Si pu� usare la parola func al posto di function. anche se questo modo d i operare � deprecato. Si pu� usare la parola func al posto di function. anche se questo modo d i operare � deprecato.
CARICARE DINAMICAMENTE NUOVE FUNZIONI CARICARE DINAMICAMENTE NUOVE FUNZIONI
Si possono aggiungere dinamicamente nuove funzioni predefinite all'inter Si possono aggiungere dinamicamente nuove funzioni scritte in C o C++ all
preter gawk con l'istruzione 'interpreter gawk in esecuzione
@load. Una descrizione dettagliata non � possibile in questa pagina di tramite l'istruzione @load. Una descrizione dettagliata non � possibi
manuale; vedere GAWK: Effective le in questa pagina di manuale;
AWK Programming. vedere GAWK: Effective AWK Programming.
SEGNALI SEGNALI
Il profilo gawk riconosce due segnali. SIGUSR1 provoca la scrittura di u n profilo e dello stack delle Il profilo gawk riconosce due segnali. SIGUSR1 provoca la scrittura di u n profilo e dello stack delle
chiamate a funzione nel file di profilazione, che ha per nome awkprof. out, o qualsiasi nome sia stato chiamate a funzione nel file di profilazione, che ha per nome awkprof. out, o qualsiasi nome sia stato
fornito specificando l'opzione --profile. Poi l'esecuzione del programma prosegue regolarmente. SIGHUP fornito specificando l'opzione --profile. Poi l'esecuzione del programma prosegue regolarmente. SIGHUP
chiede a gawk di scrivere il profilo e lo stack delle chiamate a funzi one e di terminare l'esecuzione chiede a gawk di scrivere il profilo e lo stack delle chiamate a funzi one e di terminare l'esecuzione
del programma. del programma.
INTERNAZIONALIZZAZIONE INTERNAZIONALIZZAZIONE
Le costanti di tipo stringa sono sequenze di caratteri racchiuse fra dopp i apici. In un ambiente dove Le costanti di tipo stringa sono sequenze di caratteri racchiuse fra dopp i apici. In un ambiente dove
skipping to change at line 1620 skipping to change at line 1656
COMPATIBILIT� POSIX COMPATIBILIT� POSIX
Un obiettivo fondamentale di gawk � la compatibilit� con lo standard POS IX, come pure con l'ultima ver- Un obiettivo fondamentale di gawk � la compatibilit� con lo standard POS IX, come pure con l'ultima ver-
sione di awk scritta da Brian Kernighan. Per questa ragione gawk include le seguenti caratteristiche a sione di awk scritta da Brian Kernighan. Per questa ragione gawk include le seguenti caratteristiche a
disposizione dell'utente che non sono descritte nel libro di AWK, ma ch e fanno parte della versione di disposizione dell'utente che non sono descritte nel libro di AWK, ma ch e fanno parte della versione di
awk scritta da Brian Kernighan, e che sono incluse nello standard POSIX. awk scritta da Brian Kernighan, e che sono incluse nello standard POSIX.
Il libro indica che l'assegnazione delle variabili fornite sulla riga di comando � fatta subito prima Il libro indica che l'assegnazione delle variabili fornite sulla riga di comando � fatta subito prima
che awk apra il primo file fra gli argomenti, il che avviene dopo che la regola BEGIN � stata eseguita. che awk apra il primo file fra gli argomenti, il che avviene dopo che la regola BEGIN � stata eseguita.
Peraltro, in implementazioni precedenti, quando una tale assegnazione com pariva prima di un nome di Peraltro, in implementazioni precedenti, quando una tale assegnazione com pariva prima di un nome di
file, l'assegnazione sarebbe avvenuta prima di eseguire la regola BE GIN. Esistono applicazioni che file, l'assegnazione sarebbe avvenuta prima di eseguire la regola BEG IN . Esistono applicazioni che
dipendono da questa “funzionalit�.” Quando awk � stato cambiato per cor rispondere alla sua documen- dipendono da questa “funzionalit�.” Quando awk � stato cambiato per cor rispondere alla sua documen-
tazione l'opzione -v per assegnare valori alle variabili prima dell 'inizio dell'esecuzione � stata tazione l'opzione -v per assegnare valori alle variabili prima dell 'inizio dell'esecuzione � stata
aggiunta per tener conto delle applicazioni che dipendevano dal precedent e comportamento. (Questa fun- aggiunta per tener conto delle applicazioni che dipendevano dal precedent e comportamento. (Questa fun-
zionalit� ha ottenuto l'approvazione sia dei Bell Laboratories che degli zionalit� ha ottenuto l'approvazione sia dagli sviluppatori dei Bell Labo
sviluppatori di GNU .) ratories che dagli sviluppatori
di GNU .)
Nella scansione degli argomenti, gawk usa l'opzione speciale “--” per seg nalare la fine degli argomenti. Nella scansione degli argomenti, gawk usa l'opzione speciale “--” per seg nalare la fine degli argomenti.
In modalit� compatibile, emette un messaggio e poi ignora le opzioni non disponibili. Nella modalit� In modalit� compatibile, emette un messaggio e poi ignora le opzioni n on disponibili. Nella modalit�
normale di operazione, siffatti argomenti sono passati al programma AWK p er essere trattati. normale di operazione, siffatti argomenti sono passati al programma AWK p er essere trattati.
Il libro di AWK non definisce il valore restituito dalla funzione srand Il libro di AWK non definisce il valore restituito dalla funzione srand()
(). Lo standard POSIX richiede . Lo standard POSIX richiede
che restituisca il "seme" che � stato usato, per consentire di tener trac che restituisca il "seme" che � stato usato, per consentire di tener t
cia delle sequenze di numeri raccia delle sequenze di numeri
casuali. Pertanto srand() in gawk restituisce anche il suo "seme" corren te. casuali. Pertanto srand() in gawk restituisce anche il suo "seme" corren te.
Altre funzionalit� sono: L'uso di opzioni -f multiple (dalla version Altre funzionalit� sono: L'uso di opzioni -f multiple (dalla versione MK
e MKS [Mortice Kern Systems] di S [Mortice Kern Systems] di
awk); il vettore ENVIRON; le sequenze di protezione \a, e \v (provenienti awk); il vettore ENVIRON; le sequenze di protezione \a, e \v (provenie
originalmente da gawk e poi nti originalmente da gawk e poi
riversate nella versione Bell Laboratories); le funzioni predefinite to riversate nella versione Bell Laboratories); le funzioni predefinite tolo
lower() e toupper() (dalla ver- wer() e toupper() (dalla ver-
sione Bell Laboratories); e le specifiche di conversione ISO C in printf sione Bell Laboratories); e le specifiche di conversione ISO C in printf
(presenti per prime nella ver- (presenti per prime nella ver-
sione Bell Laboratories). sione Bell Laboratories).
FUNZIONALIT� STORICHE FUNZIONALIT� STORICHE
C'� una caratteristica dell'implementazione storica di AWK che gawk su pporta: � possibile chiamare la C'� una caratteristica dell'implementazione storica di AWK che gawk suppo rta: � possibile chiamare la
funzione predefinita length() non solo senza alcun argomento, ma perfino senza parentesi! Quindi, funzione predefinita length() non solo senza alcun argomento, ma perfino senza parentesi! Quindi,
a = length # Sant'Algol 60, Batman! a = length # Sant'Algol 60, Batman!
equivale sia a equivale sia a
a = length() a = length()
a = length($0) a = length($0)
Usare questa funzionalit� � una pratica deprecata, e gawk emette un messa ggio di avvertimento se la si Usare questa funzionalit� � una pratica deprecata, e gawk emette un mes saggio di avvertimento se la si
usa, qualora si sia specificato --lint sulla riga di comando. usa, qualora si sia specificato --lint sulla riga di comando.
ESTENSIONI GNU ESTENSIONI GNU
Gawk ha fin troppe estensioni rispetto alla versione POSIX di awk. Gawk ha fin troppe estensioni rispetto alla versione POSIX di awk. Es
Esse sono descritte in questa se sono descritte in questa
sezione. Tutte le estensioni qui descritte possono essere disabilitate i sezione. Tutte le estensioni qui descritte possono essere disabilitat
nvocando gawk con le opzioni e invocando gawk con le opzioni
--traditional o --posix. --traditional o --posix.
Le seguenti funzionalit� di gawk sono sono disponibili nella versione POS IX di awk. Le seguenti funzionalit� di gawk sono sono disponibili nella versione POS IX di awk.
· Non viene fatta una ricerca nelle librerie per file richiamati tramite l'opzione -f. Quindi la vari- · Non viene fatta una ricerca nelle librerie per file richiamati tramite l'opzione -f. Quindi la vari-
abile d'ambiente AWKPATH non � speciale. abile d'ambiente AWKPATH non � speciale.
· Non c'� modo di includere dei file da programma (il meccanismo gawk di @include). · Non c'� modo di includere dei file da programma (il meccanismo gawk di @include).
· Non c'� modo di aggiungere dinamicamente nuove funzioni scritte in C (m eccanismo @load di gawk). · Non c'� modo di aggiungere dinamicamente nuove funzioni scritte in C (m eccanismo @load di gawk).
· La sequenza di protezione \x. · La sequenza di protezione \x.
· La possibilit� di continuare delle righe dopo un ? e i :. · La possibilit� di continuare delle righe dopo un ? e i :.
skipping to change at line 1705 skipping to change at line 1742
· Un quarto argomento opzionale per split() che riceva i testi da usare c ome separatori. · Un quarto argomento opzionale per split() che riceva i testi da usare c ome separatori.
· Il secondo argomento opzionale della funzione close(). · Il secondo argomento opzionale della funzione close().
· Il terzo argomento opzionale della funzione match(). · Il terzo argomento opzionale della funzione match().
· La possibilit� di usare specificatori posizionali con printf e sprintf( ). · La possibilit� di usare specificatori posizionali con printf e sprintf( ).
· La possibilit� di avere un vettore come argomento alla funzione length( ). · La possibilit� di avere un vettore come argomento alla funzione length( ).
· Le funzioni and(), asort(), asorti(), bindtextdomain(), compl(), dcget text(), dcngettext(), gensub(), · Le funzioni and(), asort(), asorti(), bindtextdomain(), compl(), dcgett ext(), dcngettext(), gensub(),
lshift(), mktime(), or(), patsplit(), rshift(), strftime(), strtonum(), systime() e xor(). lshift(), mktime(), or(), patsplit(), rshift(), strftime(), strtonum(), systime() e xor().
· Stringhe traducibili in varie lingue. · Stringhe traducibili in varie lingue.
· Errore di I/O non-fatale. · Errore di I/O non-fatale.
· I/O ritentabile. · I/O ritentabile.
Il libro AWK non definisce il valore restituito dalla funzione close(). Il libro AWK non definisce il valore restituito dalla funzione close().
Invece la funzione close() di Invece la funzione close() di
Gawk restituisce il valore ottenuto da fclose(3) o pclose(3) alla chiusu Gawk restituisce il valore ottenuto da fclose(3) o pclose(3) alla chiusur
ra, rispettivamente, di un file a, rispettivamente, di un file
di output o di una pipe. Alla chiusura di una pipe di input viene restit di output o di una pipe. Alla chiusura di una pipe di input viene re
uito lo stato di uscita del stituito lo stato di uscita del
processo. Il valore restituito � -1 se il file, la pipe o il coproce processo. Il valore restituito � -1 se il file, la pipe o il coprocesso
sso in questione non sono stati in questione non sono stati
aperti con una ridirezione. aperti con una ridirezione.
Quando gawk � invocato con l'opzione --traditional, se l'argomento fs Quando gawk � invocato con l'opzione --traditional, se l'argoment
all'opzione -F � “t”, FS � o fs all'opzione -F � “t”, FS �
impostato avendo come valore il carattere di tabulazione (<TAB>). Si no impostato avendo come valore il carattere di tabulazione (<TAB>). Si not
ti che immettendo gawk -F\t ... i che immettendo gawk -F\t ...
si chiede alla shell di preservare “t,” e non di passare “\t” all'opzione si chiede alla shell di preservare “t,” e non di passare “\t” all'opzio
-F. Poich� questo � un caso ne -F. Poich� questo � un caso
speciale piuttosto antipatico, non � il comportamento predefinito. speciale piuttosto antipatico, non � il comportamento predefinito. Qu
Questo comportamento non viene esto comportamento non viene
seguito neppure quando si specifica --posix. Per ottenere che un caratte re <TAB> faccia da delimitatore seguito neppure quando si specifica --posix. Per ottenere che un caratte re <TAB> faccia da delimitatore
di campo, � meglio usare apici singoli: gawk -F'\t' .... di campo, � meglio usare apici singoli: gawk -F'\t' ....
VARIABILI D'AMBIENTE VARIABILI D'AMBIENTE
La variabile d'ambiente AWKPATH pu� essere usata per fornire una list La variabile d'ambiente AWKPATH pu� essere usata per fornire una lista di
a di directory che gawk esamina directory che gawk esamina
alla ricerca di file coi nomi indicati tramite le opzioni -f, --file, -i alla ricerca di file coi nomi indicati tramite le opzioni -f, --fil
e --include, e tramite la e, -i e --include, e tramite la
direttiva @include. Se la ricerca iniziale non ha successo, una seconda direttiva @include. Se la ricerca iniziale non ha successo, una seconda
ricerca � effettuata accodando ricerca � effettuata accodando
.awk al nome del file indicato. .awk al nome del file indicato.
La variabile d'ambiente AWKLIBPATH pu� essere usata per fornire una lista di directory che gawk esamina La variabile d'ambiente AWKLIBPATH pu� essere usata per fornire una list a di directory che gawk esamina
alla ricerca di file coi nomi indicati tramite le opzioni -l e --load alla ricerca di file coi nomi indicati tramite le opzioni -l e --load
La variabile d'ambiente GAWK_READ_TIMEOUT pu� essere usata per specificar e un tempo massimo in millisec- La variabile d'ambiente GAWK_READ_TIMEOUT pu� essere usata per specificar e un tempo massimo in millisec-
ondi per leggere input da un terminale, da una pipe o da una comunicazi one bidirezionale, inclusi i ondi per leggere input da un terminale, da una pipe o da una comunic azione bidirezionale, inclusi i
socket. socket.
Per le connessioni a un host remoto via socket, GAWK_SOCK_RETRIES cont Per le connessioni a un host remoto via socket, GAWK_SOCK_RETRIES control
rolla il numero di tentativi di la il numero di tentativi di
lettura, e GAWK_MSEC_SLEEP l'intervallo fra un tentativo di lettura e l'a lettura, e GAWK_MSEC_SLEEP l'intervallo fra un tentativo di lettura e que
ltro. L'intervallo � in mil- llo successivo. L'intervallo �
lisecondi. Su sistemi che non supportano usleep(3), il valore � arroton in millisecondi. Su sistemi che non supportano usleep(3), il valore � ar
dato a un numero intero di sec- rotondato a un numero intero di
ondi. secondi.
Se la variabile POSIXLY_CORRECT esiste nell'ambiente, gawk si comporta es attamente come se --posix fosse Se la variabile POSIXLY_CORRECT esiste nell'ambiente, gawk si comporta es attamente come se --posix fosse
stato specificato sulla riga di comando. Se --lint � stato specifica to, gawk emette un messaggio di stato specificato sulla riga di comando. Se --lint � stato specificato, gawk emette un messaggio di
avvertimento riguardo a questo. avvertimento riguardo a questo.
STATO DI USCITA STATO DI USCITA
Se l'istruzione exit � usata avendo come parametro un valore, gawk t ermina restituendo il valore Se l'istruzione exit � usata avendo come parametro un valore, gaw k termina restituendo il valore
numerico in questione. numerico in questione.
Altrimenti, se non sono stati riscontrati problemi in fase di esecuzi one, gawk termina con il valore Altrimenti, se non sono stati riscontrati problemi in fase di esecuzione, gawk termina con il valore
della costante C EXIT_SUCCESS. Questo valore � normalmente zero. della costante C EXIT_SUCCESS. Questo valore � normalmente zero.
In caso di errore, gawk termina con il valore della costante C EXIT_FAILU RE. Questo valore � normal- In caso di errore, gawk termina con il valore della costante C EXIT_FA ILURE. Questo valore � normal-
mente uno. mente uno.
Se gawk termina a causa di un errore fatale, il valore restituito � 2 . Su sistemi non-POSIX, questo Se gawk termina a causa di un errore fatale, il valore restituito � 2. Su sistemi non-POSIX, questo
valore pu� essere visualizzato come EXIT_FAILURE. valore pu� essere visualizzato come EXIT_FAILURE.
INFORMAZIONE SULLA VERSIONE INFORMAZIONE SULLA VERSIONE
Questa pagina man documenta gawk, versione 4.2. Questa pagina man documenta gawk, versione 5.1.
AUTORI AUTORI
La versione originale di UNIX awk � stata progettata e implementata da Al fred Aho, Peter Weinberger, e La versione originale di UNIX awk � stata progettata e implementata da Alfred Aho, Peter Weinberger, e
Brian Kernighan dei Bell Laboratories. Brian Kernighan continua a manten ere e migliorare il programma. Brian Kernighan dei Bell Laboratories. Brian Kernighan continua a manten ere e migliorare il programma.
Paul Rubin e Jay Fenlason, della Free Software Foundation, hanno scritto gawk, in modo che fosse compat- Paul Rubin e Jay Fenlason, della Free Software Foundation, hanno scritto gawk, in modo che fosse compat-
ibile con la versione originale di awk distribuita con la Settima Edizion e di UNIX. John Woods ha con- ibile con la versione originale di awk distribuita con la Settima Edizio ne di UNIX. John Woods ha con-
tribuito con numerose correzioni di errori. David Trueman, con contribuz ioni da Arnold Robbins, ha reso tribuito con numerose correzioni di errori. David Trueman, con contribuz ioni da Arnold Robbins, ha reso
gawk compatibile con la nuova versione di UNIX awk. Arnold Robbins � il manutentore corrente. gawk compatibile con la nuova versione di UNIX awk. Arnold Robbins � il manutentore corrente.
Vedere GAWK: Effective AWK Programming per una lista completa di contribu tori a gawk e alla sua documen- Vedere GAWK: Effective AWK Programming per una lista completa di contribu tori a gawk e alla sua documen-
tazione. tazione.
Vedere il file README nella distribuzione gawk per informazioni aggiornat e riguardo ai manutentori e per Vedere il file README nella distribuzione gawk per informazioni aggiornat e riguardo ai manutentori e per
sapere per quali sistemi operativi gawk � disponibile. sapere per quali sistemi operativi gawk � disponibile.
Traduzione in italiano a cura di ILDP - Italian Linux Documentation Proje ct http://www.pluto.it/ildp Traduzione in italiano a cura di ILDP - Italian Linux Documentation Proje ct http://www.pluto.it/ildp
SEGNALAZIONE DI ERRORI SEGNALAZIONE DI ERRORI
Se trovate un bug in gawk, siete pregati di inviare un messagg io di posta elettronica a Se trovate un bug in gawk, siete pregati di inviare un messa ggio di posta elettronica a
bug-gawk@gnu.org. Siete pregati di includere il vostro sistema operativo e la versione di gawk (da gawk bug-gawk@gnu.org. Siete pregati di includere il vostro sistema operativo e la versione di gawk (da gawk
--version), quale compilatore C avete usato per compilarlo, e un programm a di test con anche i dati, --version), quale compilatore C avete usato per compilarlo, e un prog ramma di test con anche i dati,
ridotti allo stretto necessario, per riprodurre il problema. ridotti allo stretto necessario, per riprodurre il problema.
Prima di spedire un rapporto di errore fate quanto segue. Per prima cos Prima di spedire un rapporto di errore fate quanto segue. Per prima cosa
a, verificate che stiate usando , verificate che stiate usando
l'ultima versione di gawk. Molti bug (normalmente abbastanza difficili d l'ultima versione di gawk. Molti bug (normalmente abbastanza difficili
a incontrare) sono corretti in da incontrare) sono corretti in
ogni nuova versione, e se la vostra versione � molto datata, il pro ogni nuova versione, e se la vostra versione � molto datata, il problem
blema potrebbe essere gi� stato a potrebbe essere gi� stato
risolto. Secondariamente, siete pregati di controllare se impostando la risolto. Secondariamente, siete pregati di controllare se impostando l
variabile d'ambiente LC_ALL a a variabile d'ambiente LC_ALL a
LC_ALL=C faccia s� che il problema scompaia. Se cos� �, si tratta di u LC_ALL=C faccia s� che il problema scompaia. Se cos� �, si tratta di un
n problema legato alla localiz- problema legato alla localiz-
zazione, che pu� essere o meno un errore. Infine, siete pregati di legge re questa man page e il manuale zazione, che pu� essere o meno un errore. Infine, siete pregati di legge re questa man page e il manuale
di riferimento con attenzione, per assicurarvi che quello che voi ritenet e essere un errore lo sia vera- di riferimento con attenzione, per assicurarvi che quello che voi ritenet e essere un errore lo sia vera-
mente, invece di essere solo un comportamento strano del linguaggio. mente, invece di essere solo un comportamento strano del linguaggio.
Qualsiasi cosa facciate, NON inviate un messaggio per segnalare l'errore Qualsiasi cosa facciate, NON inviate un messaggio per segnalare l'errore
a comp.lang.awk. Anche se gli a comp.lang.awk. Anche se gli
sviluppatori di gawk di tanto in tanto leggono questo forum, inviare sviluppatori di gawk di tanto in tanto leggono questo forum, inviare qui
qui messaggi di segnalazione di messaggi di segnalazione di
errore � una maniera poco affidabile per segnalare errori. Siete invece errore � una maniera poco affidabile per segnalare errori. Analogame
pregati di usare l'indirizzo di nte, NON usare una comunit� web
posta elettronica scritto pi� sopra. Veramente! (tipo Stack Overflow) per segnalare errori. Siete invece pregati di usar
e gli indirizzi di posta elet-
tronica riportati pi� sopra. Veramente!
Se state usando un sistema GNU/Linux o basato sulla distribuzione BSD, potreste rivolgervi a chi for- Se state usando un sistema GNU/Linux o basato sulla distribuzione BSD, potreste rivolgervi a chi for-
nisce la vostra distribuzione software. Questo va bene, ma siete pregati di spedire una copia all'indi- nisce la vostra distribuzione software. Questo va bene, ma siete pregati di spedire una copia all'indi-
rizzo email specificato, poich� non esiste alcune certezza che il vo stro messaggio sia inoltrato al rizzo email specificato, poich� non esiste alcune certezza che il vo stro messaggio sia inoltrato al
manutentore di gawk. manutentore di gawk.
Segnalare eventuali errori di traduzione a ildp@pluto.it Segnalare eventuali errori di traduzione a ildp@pluto.it
ERRORI ERRORI
L'opzione -F non � pi� necessaria, vista la possibilit� di assegnare vari abili nella riga di comando; L'opzione -F non � pi� necessaria, vista la possibilit� di assegnare vari abili nella riga di comando;
viene mantenuta solo per compatibilit� all'indietro. viene mantenuta solo per compatibilit� all'indietro.
VEDERE ANCHE VEDERE ANCHE
egrep(1), sed(1), getpid(2), getppid(2), getpgrp(2), getuid(2), geteuid( 2), getgid(2), getegid(2), get- egrep(1), sed(1), getpid(2), getppid(2), getpgrp(2), getuid(2), geteuid( 2), getgid(2), getegid(2), get-
groups(2), printf(3), strftime(3), usleep(3) groups(2), printf(3), strftime(3), usleep(3)
The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter J . Weinberger, Addison-Wesley, The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter J . Weinberger, Addison-Wesley,
1988. ISBN 0-201-07981-X. 1988. ISBN 0-201-07981-X.
GAWK: Effective AWK Programming, Edition 4.2, disponibile con il cod ice sorgente gawk. La versione GAWK: Effective AWK Programming, Edizione 5.1, disponibile con il cod ice sorgente gawk. La versione
originale corrente di questo documento � disponibile online a: https://ww w.gnu.org/software/gawk/manual. originale corrente di questo documento � disponibile online a: https://ww w.gnu.org/software/gawk/manual.
La documentazione di gettext GNU � disponibile online a: https://www.gnu. org/software/gettext. La documentazione di gettext GNU � disponibile online a: https://www.gnu. org/software/gettext.
ESEMPI ESEMPI
Stampa ed ordina i nomi di login di tutti gli utenti: Stampa ed ordina i nomi di login di tutti gli utenti:
BEGIN { FS = ":" } BEGIN { FS = ":" }
{ print $1 | "sort" } { print $1 | "sort" }
skipping to change at line 1855 skipping to change at line 1893
tail -f access_log | tail -f access_log |
awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }' awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'
RICONOSCIMENTI RICONOSCIMENTI
Brian Kernighan ha fornito valida assistenza durante il test e la correzi one degli errori. Lo ringrazi- Brian Kernighan ha fornito valida assistenza durante il test e la correzi one degli errori. Lo ringrazi-
amo. amo.
COPYING PERMISSIONS COPYING PERMISSIONS
Copyright © 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 , 2001, 2002, 2003, 2004, 2005, Copyright © 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 , 2001, 2002, 2003, 2004, 2005,
2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Free Sof 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2
tware Foundation, Inc. 020, Free Software Foundation,
Inc.
Permission is granted to make and distribute verbatim copies of this manu al page provided the copyright Permission is granted to make and distribute verbatim copies of this man ual page provided the copyright
notice and this permission notice are preserved on all copies. notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this m Permission is granted to copy and distribute modified versions of this ma
anual page under the conditions nual page under the conditions
for verbatim copying, provided that the entire resulting derived work is for verbatim copying, provided that the entire resulting derived work is
distributed under the terms of distributed under the terms of
a permission notice identical to this one. a permission notice identical to this one.
Permission is granted to copy and distribute translations of this man Permission is granted to copy and distribute translations of this manual
ual page into another language, page into another language,
under the above conditions for modified versions, except that this permis under the above conditions for modified versions, except that this permi
sion notice may be stated in a ssion notice may be stated in a
translation approved by the Foundation. translation approved by the Foundation.
PERMESSI DI COPIA PERMESSI DI COPIA
Questa � una traduzione non ufficiale in italiano dei permessi di c Questa � una traduzione non ufficiale in italiano dei permessi di copi
opia riportati nella precedente a riportati nella precedente
sezione "COPYING PERMISSIONS". Non � una pubblicazione della Free So sezione "COPYING PERMISSIONS". Non � una pubblicazione della Fre
ftware Foundation, e non ha e Software Foundation, e non ha
validit� legale per i termini di distribuzione della documentazione; sol validit� legale per i termini di distribuzione della documentazione; solo
o il testo originale inglese ha il testo originale inglese ha
tale validit�. tale validit�.
This is an unofficial translation into Italian of the above section "COPY This is an unofficial translation into Italian of the above section "C
ING PERMISSIONS". It was not OPYING PERMISSIONS". It was not
published by the Free Software Foundation, and does not legally state published by the Free Software Foundation, and does not legally state the
the distribution terms for this distribution terms for this
documentation; only the original English text does that. documentation; only the original English text does that.
Copyright © 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2 001, 2002, 2003, 2004, 2005, Copyright © 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 , 2001, 2002, 2003, 2004, 2005,
2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Founda tion, Inc. 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Founda tion, Inc.
permesso stampare e distribuire copie letterali di questa pagina di ma nuale, a patto che il copyright permesso stampare e distribuire copie letterali di questa pagina di man uale, a patto che il copyright
e questa nota di autorizzazione siano conservate e presenti in ogni copia . e questa nota di autorizzazione siano conservate e presenti in ogni copia .
� permesso copiare e distribuire versioni modificate di questa pagina del � permesso copiare e distribuire versioni modificate di questa pagina d
manuale, sotto le condizioni el manuale, sotto le condizioni
poste per la copia letterale, a patto che l'intero lavoro derivato sia poste per la copia letterale, a patto che l'intero lavoro derivato sia di
distribuito secondo permessi di stribuito secondo permessi di
stampa identici a questi. stampa identici a questi.
� permesso copiare e distribuire traduzioni di questa pagina di manuale i � permesso copiare e distribuire traduzioni di questa pagina di manua
n un'altra lingua, sotto le le in un'altra lingua, sotto le
condizioni poste sopra per le versioni modificate, salvo che quest'infor condizioni poste sopra per le versioni modificate, salvo che quest'inform
mazione sui permessi di copia e azione sui permessi di copia e
ristampa deve essere espressa in una traduzione approvata dalla Free Soft ware Foundation. ristampa deve essere espressa in una traduzione approvata dalla Free Soft ware Foundation.
Free Software Foundation Nov 29 2018 GAWK(1) Free Software Foundation Mar 23 2020 GAWK(1)
 End of changes. 201 change blocks. 
600 lines changed or deleted 664 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)