awkで両方の変数文字列に対して文字列比較を実行するには?

awkで両方の変数文字列に対して文字列比較を実行するには?

として前の質問に対するフォローアップ、文書の両側に可変文字があるときに同様の文字列比較を実行するにはどうすればよいですか?

たとえば、

# test,date
"test1","27 March 2024 01:37 PM UTC"
"test2","13 April 2024 07:08 AM UTC"
"test4","13 April 2024 07:09 AM UTC"
"test5","13 April 2024 07:10 AM UTC"
"test6","13 April 2024 07:12 AM UTC"

どうなりますか?以前の回答:

awk -F, -v date="$(date +'%B %Y')\"$" '/^[^#]/ && $2 ~ date{print $1}'

今月(作成時の2024年4月)からすべてのテストを印刷するように修正しますか?

ベストアンサー1

awk -F, -v date="$(date +'%B %Y')\"$"

April 2024"$変数に格納された正規表現を作成しますdate。これは新しい入力と一致しないため、目的の別の一致正規表現\"$に変更して一致する正規表現に調整します。たとえば、次のようになります。[^\"]*\"$

$ awk -F, -v date="$(date +'%B %Y')[^\"]+\"$" '/^[^#]/ && $2 ~ date{print $1}' file
"test2"
"test4"
"test5"
"test6"

または、2番目のフィールドに含めることができる他の値によっては、より強力な場合があります。

$ awk -F, -v date="$(date +'%B %Y') [0-9]{2}:[0-9]{2} [AP]M [[:upper:]]+\"$" '/^[^#]/ && $2 ~ date{print $1}' file
"test2"
"test4"
"test5"
"test6"

おすすめ記事