動的正規表現を使って任意の変数と文字列をマッチさせる

The GNU Awk User's Guide - 正規表現

動的正規表現を使う

`~'演算子や`!~'演算子の右辺に置くものは正規表現定数(スラッシュの間に置 かれた文字列)である必要はなく、任意の式を置くことができる。そのような式 は評価され、必要があれば文字列に変換される。評価され変換が行なわれた 結果は正規表現として扱われる。 このように演算が行われる正規表現は動的正規表現(dynamic regular expression)と呼ばれる。例を挙げよう。

BEGIN { identifier_regexp = "[A-Za-z_][A-Za-z_0-9]+" }
$0 ~ identifier_regexp { print }
これはidentifier_regexpawkでの変数名を表す正規表現をセ ットし、入力レコード中にこの正規表現にマッチするものがあるかをテストす るものである。

これを使えば任意の変数を含む行を抽出できる。

BEGIN{
   var="hoge"
}
$0~var{
   print $0
}
END{
}