Posiadanie następujących w jednej z moich funkcji powłoki:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, więc gdy zostanie wywołany jako _process $arg
, $arg
zostanie przekazany jako $1
i użyty jako wzorzec wyszukiwania. Działa to w ten sposób, ponieważ skorupa rozszerza się $1
zamiast wzoru awk! Również l
może być używany wewnątrz programu awk, zadeklarowane z -v l="$line"
. Wszystko w porządku.
Czy w ten sam sposób można podać wzorzec wyszukiwania jako zmienną?
Obserwowanie nie będzie działać,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, ponieważ awk nie będzie interpretowany /search/
jako zmienna, ale dosłownie.