Folgendes in einer meiner Shell-Funktionen haben:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
Wenn also as aufgerufen wird _process $arg
, $arg
wird as übergeben $1
und als Suchmuster verwendet. Es funktioniert auf diese Weise, weil sich die Schale $1
anstelle des awk-Musters ausdehnt ! Auch l
können innerhalb awk - Programm verwendet werden, wobei erklärt mit -v l="$line"
. Alles gut.
Ist es auf die gleiche Weise möglich, Suchmuster als Variable anzugeben?
Folgendes wird nicht funktionieren,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, as awk wird nicht /search/
als Variable interpretiert , sondern wörtlich.