動的正規表現を使って任意の変数と文字列をマッチさせる
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_regexpにawkでの変数名を表す正規表現をセ ットし、入力レコード中にこの正規表現にマッチするものがあるかをテストす るものである。
これを使えば任意の変数を含む行を抽出できる。
例
BEGIN{ var="hoge" } $0~var{ print $0 } END{ }