我正在尝试以下正则表达式来匹配日期,我将在更大的awk脚本中使用这个正则表达式,但这似乎不起作用。
echo "2343-23-23"| nawk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/'
上面一行给出了空行
另外,如何将转换后的结果转换为Date?我想在匹配结果上进行日期比较。我想做最后的事情
echo "2016-01-01 11:12:13,234" | nawk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/ {if(date($0) > date("2016-01-01 10:00:00,234"){print "Yes";}}'
谢谢。
答案 0 :(得分:1)
nawk是一个非常古老的非POSIX awk,除其他外,它不支持RE间隔。如果可能的话,获取/使用gawk,否则使用其他一些现代的awk,但如果你被nawk困住,那么使用/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
。
你的后续问题 - 发布一个新问题,其中包括简明,可测试的样本输入和预期输出,以及对你的帮助要求的更好的描述,因为你目前所写的内容尚不清楚,可能是很多事情之一。
答案 1 :(得分:1)
保留正则表达式,但在其后添加RETURN
。由于1
始终评估为1
,因此会执行默认操作true
。
{print $0}
对于旧版本,您可以尝试:
awk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/1' <<< 1999-05-05
Ideone演示