次のコードがあります。
$ awk -F'[]]|[[]' \
'$0 ~ /^\[/ && $2 >= "2014-04-07 23:00" { p=1 }
$0 ~ /^\[/ && $2 >= "2014-04-08 02:00:01" { p=0 }
p { print $0 }' log
ここでは、ある変数に「2014-04-07」を割り当て、別の変数に「23:00」を割り当てたいと思います。 $ varなどを使用してその値から入力を取得します。ハードコードされたタイムスタンプの代わりに変数を使用できるように上記のコードを変更するのに役立つ人はいますか?
元の質問へのリンクは次のとおりです。2つのタイムスタンプ間のログを抽出する方法。
ベストアンサー1
-v
次のオプションを使用して変数をパラメータとして渡すことができます。
awk -F'[]]|[[]' -v var1="2014-04-07 23:00" -v var2="2014-04-08 02:00:01" \
'$0 ~ /^\[/ && $2 >= var1 { p=1 }
$0 ~ /^\[/ && $2 >= var2 { p=0 }
p { print $0 }' log
あるいは、ブロックに変数を設定することもできますBEGIN
。
awk -F'[]]|[[]' \
'BEGIN{var1="2014-04-07 23:00"; var2="2014-04-08 02:00:01"}
$0 ~ /^\[/ && $2 >= var1 { p=1 }
$0 ~ /^\[/ && $2 >= var2 { p=0 }
p { print $0 }' log