Avere quanto segue in una delle mie funzioni di shell:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, quindi quando viene chiamato come _process $arg
, $arg
viene passato come $1
e utilizzato come modello di ricerca. Funziona in questo modo, perché la shell si espande $1
al posto del modello awk! Inoltre l
può essere utilizzato all'interno del programma awk, essendo dichiarato con -v l="$line"
. Tutto bene.
È possibile allo stesso modo dare uno schema per la ricerca come variabile?
Il seguito non funzionerà,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, poiché awk non interpreterà /search/
come una variabile, ma invece letteralmente.