Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk数据匹配不起作用regexp+;日期函数_Regex_Awk - Fatal编程技术网

Awk数据匹配不起作用regexp+;日期函数

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

我正在尝试使用以下正则表达式来匹配日期,我将在更大的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) > 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