作为一个跟进我之前的问题,当文档中两边都有可变字符时,如何进行类似的字符串比较?
举个例子:
# 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"
或者可能更稳健,取决于第二个字段中可以包含哪些其他值:
$ 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"