awk を使っていて,マッチさせる正規表現を変数を使って動的に変更させたいときがある.
そんなときは以下のようにする.
正規表現マッチングは
line = $0
if ( line ~ /[abc]+/) {
...
}
とするが,/.../ の部分を動的に変更したい.
そんなときは,正規表現を表す文字列を作成してから,~ で検索する.
#! /bin/awk -f
{
line = $0
regexp = word"[abc]+"
if ( line ~ regexp ) {
# ヒットしたときの処理
} else {
# ヒットしなかったときの処理
}
}
として,このスクリプトを
test.awk -v word="target" file.txt
などとして,-v で word に代入する値を指定して実行する.
そんなときは以下のようにする.
正規表現マッチングは
line = $0
if ( line ~ /[abc]+/) {
...
}
とするが,/.../ の部分を動的に変更したい.
そんなときは,正規表現を表す文字列を作成してから,~ で検索する.
#! /bin/awk -f
{
line = $0
regexp = word"[abc]+"
if ( line ~ regexp ) {
# ヒットしたときの処理
} else {
# ヒットしなかったときの処理
}
}
として,このスクリプトを
test.awk -v word="target" file.txt
などとして,-v で word に代入する値を指定して実行する.