私のシェル関数の1つに次のものがある:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
として呼び出されると_process $arg、として$arg渡され$1、検索パターンとして使用されます。$1awkパターンの代わりにシェルが展開するため、このように動作します!またl、awkプログラム内で使用することができますを使用して宣言されています-v l="$line"。大丈夫だ。
同じ方法で変数として検索するパターンを与えることは可能ですか?
以下は機能しませんが、
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
awkが/search/変数として解釈するのではなく、文字通り解釈するため。