Successivo: Panoramica sulle azioni, Precedente: Panoramica sui criteri di ricerca, Su: Criteri di ricerca e azioni [Contenuti][Indice]
I programmi awk
sono spesso usati come componenti di programmi più
ampi, scritti in un linguaggio di shell.
Per esempio, è molto comune usare una variabile di shell per
specificare un criterio di ricerca che il programma awk
deve poi
individuare.
Ci sono due modi per rendere disponibile il valore di una variabile di shell
all’interno di un programma awk
.
Un modo comune è quello di usare i doppi apici per sostituire il valore della
variabile nel progamma awk
contenuto nello script:
Per esempio, si consideri il programma seguente:
printf "Immettere il criterio di ricerca: " read criterio_di_ricerca awk "/$criterio_di_ricerca/ "'{ num_trov++ } END { print num_trov, "occorrenze trovate" }' /nome/file/dati
Il programma awk
consiste di due pezzi di testo tra apici
che, concatenati insieme, formano il programma.
La prima parte è tra doppi apici, per consentire la sostituzione della
variabile di shell criterio_di_ricerca
contenuta al loro interno.
La seconda parte è racchiusa tra apici singoli.
La sostituzione di variabile attraverso gli apici funziona, ma può facilmente generare difficoltà. Richiede una buona comprensione delle regole per l’uso degli apici nella shell (vedi la sezione Uso di apici nella shell.), e spesso è difficile accoppiare i vari apici quando si legge il programma.
Un metodo migliore è quello di usare la funzionalità di assegnamento delle
variabili di awk
(vedi la sezione Assegnare una variabile dalla riga di comando)
per assegnare il valore di una variabile di shell a una variabile
di awk
.
Poi si possono usare regexp dinamiche come criterio di ricerca
(vedi la sezione Usare regexp dinamiche).
Quanto segue mostra come sarebbe l’esempio precedente usando questa tecnica:
printf "Immettere il criterio di ricerca: " read criterio_di_ricerca awk -v crit="$criterio_di_ricerca" '$0 ~ crit { num_trov++ } END { print num_trov, "occorrenze trovate" }' /nome/file/dati
Adesso il programma awk
è solo una stringa tra apici semplici.
L’assegnamento ‘-v crit="$criterio_di_ricerca"’ richiede ancora doppi
apici, per il caso in cui uno spazio vuoto sia presente nel valore di
$criterio_di_ricerca
.
La variabile awk
crit
potrebbe avere come nome anche
criterio_di_ricerca
, ma ciò potrebbe essere causa di confusione.
Usare una variabile permette una maggiore flessibilità, poiché la variabile
può essere usata in ogni parte del
programma — per stamparla, per indicizzare un vettore, o per qualsiasi altro
scopo — senza che sia necessario l’artificio di doverla inserire usando gli
apici.
Successivo: Panoramica sulle azioni, Precedente: Panoramica sui criteri di ricerca, Su: Criteri di ricerca e azioni [Contenuti][Indice]