Awk数据匹配不起作用regexp+;日期函数
我正在尝试使用以下正则表达式来匹配日期,我将在更大的awk脚本中使用此正则表达式,但这似乎在某种程度上不起作用Awk数据匹配不起作用regexp+;日期函数,regex,awk,Regex,Awk,我正在尝试使用以下正则表达式来匹配日期,我将在更大的awk脚本中使用此正则表达式,但这似乎在某种程度上不起作用 echo "2343-23-23"| nawk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/' 上面的行给出了空行 另外,如何将返回的结果转换为日期?我想对匹配结果进行日期比较。我最终想做如下的事情 echo "2016-01-01 11:12:13,234" | nawk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/ {if(date($0
echo "2343-23-23"| nawk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/'
上面的行给出了空行
另外,如何将返回的结果转换为日期?我想对匹配结果进行日期比较。我最终想做如下的事情
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";}}'
谢谢。nawk是一种非常古老的非POSIX awk,除其他外,它不支持重新间隔。如果可能的话,获取/使用gawk,否则使用其他一些现代awk,但是如果你一直使用nawk,那么就使用
/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
写下你的后续问题-发布一个新问题,其中包括简明的、可测试的样本输入和预期的输出,并更好地描述你的帮助需求,因为你目前所写的内容不清楚,可能是许多事情之一。保留你的正则表达式,但在其后添加
1
。由于1
的计算结果总是true
,因此它执行默认操作{print$0}
awk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/1' <<< 1999-05-05
awk'/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/1'不熟悉nawk
,是否有一个--re interval
选项来启用区间表达式?@Kent否,这只适用于gawk的旧版本。nawk非常古老,因此不支持重间隔、字符类或其他现代POSIX构造。谢谢你的帮助!知道如何将字符串转换为日期吗?请参阅问题中的最后一行。您可能希望将awk的结果通过管道传输到该答案的bash脚本,该脚本在最后做了什么?由于1
的计算结果总是true
,因此它执行默认操作{print$0}
awk '/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/1' <<< 1999-05-05