Tendo o seguinte em uma das minhas funções shell:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, portanto, quando chamado como _process $arg
, $arg
é passado como $1
e usado como padrão de pesquisa. Funciona assim, porque o shell se expande $1
no lugar do padrão awk! Também l
pode ser usado dentro do programa awk, sendo declarado com -v l="$line"
. Tudo bem.
É possível, da mesma maneira, fornecer um padrão para pesquisar como uma variável?
A seguir não funcionará,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, como awk não interpretará /search/
como uma variável, mas literalmente.