Precedente: Usare variabili, Su: Variabili [Contenuti][Indice]
Si può impostare qualsiasi variabile awk
includendo un
assegnamento di variabile tra gli argomenti sulla riga di comando quando
viene invocato awk
(vedi la sezione Altri argomenti della riga di comando).
Tale assegnamento ha la seguente forma:
variabile=testo
Con questo assegnamento, una variabile viene impostata o all’inizio
dell’esecuzione di awk
o tra la lettura di un file in input e il
successivo file in input.
Quando l’assegnamento è preceduto dall’opzione -v,
come nel seguente esempio:
-v variabile=testo
la variabile è impostata proprio all’inizio, ancor prima che sia eseguita la
regola BEGIN
. L’opzione -v e il suo assegnamento
deve precedere tutti gli argomenti nome-file, e anche il testo del programma.
(Vedi la sezione Opzioni sulla riga di comando per maggiori informazioni sull’opzione
-v.)
In alternativa, l’assegnamento di variabile è effettuata in un momento
determinato
dalla posizione dell’opzione tra gli argomenti "file in input", cioè dopo
l’elaborazione del precedente argomento "file in input". Per esempio:
awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
stampa il valore del campo numero n
per tutti i record in input. Prima
che venga letto il primo file, la riga di comando imposta la variabile n
al valore quattro. Questo fa sì che venga stampato il quarto campo delle righe
del file inventory-shipped. Dopo la fine del primo file, ma prima
che inizi il secondo file, n
viene impostato a due, e quindi poi
viene stampato il secondo campo delle righe di mail-list:
$ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list -| 15 -| 24 … -| 555-5553 -| 555-3412 …
Gli argomenti da riga di comando sono resi disponibili dal programma
awk
nel vettore ARGV
per poter essere esaminati esplicitamente
(vedi la sezione Usare ARGC
e ARGV
).
awk
elabora i valori degli assegnamenti da riga di comando per
sequenze di protezione
(vedi la sezione Sequenze di protezione).
(a.b.)
Le variabili assegnate sulla riga di comando (sia tramite l’opzione -v che senza) sono trattate come stringhe. Quando tali variabili sono usate come numeri, viene effettuata la normale conversione automatica da stringhe a numeri, e ogni cosa “funziona come deve”.
Peraltro, gawk
supporta variabili di tipo “regexp”.
Si possono assegnare valori a variabili di questo tipo usando la
sintassi seguente:
gawk -v 're1=@/pippo|pluto/' '…' /percorso/al/file1 're2=@/ciao|salve/' /percorso/al/file2
Le costanti regexp fortemente tipizzate sono un’altra funzionalità avanzata disponibile (vedi la sezione Costanti regexp fortemente tipizzate). Sono ricordate qui solo per completezza.
Precedente: Usare variabili, Su: Variabili [Contenuti][Indice]