regex - awk 数据匹配不起作用正则表达式 + 日期函数

标签 regex awk

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

谢谢。

最佳答案

保留您的正则表达式,但在其后添加 1 。由于 1 始终计算为 true,因此它执行默认操作 {print $0}

awk '/[0-9]{4}-[0-9]{2}-[0-9]{1,2}/1' <<< 1999-05-05

对于旧版本,您可以尝试:

awk '/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/1' <<< 1999-05-05

Ideone 演示

http://ideone.com/jyYUrM

关于regex - awk 数据匹配不起作用正则表达式 + 日期函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169268/

相关文章:

Linux 逐行读取文件并报告

c++ - 如何使 std::regex 在字符串中的特定位置开始匹配?

javascript - 使用正则表达式从 JSON 中删除具有给定属性的对象

java - java中字符串的正则表达式

regex - 在 Awk 中使用正则表达式

regex - 删除每行外部分隔符之间的多个分隔符

regex - 匹配不包含所有指定元素的字符串的正则表达式

javascript - 如果捕获组等于 replace() 中的某些内容,我如何检查正则表达式替换?

linux - 在 AWK 中使用管道

linux - BASH Linux 退出读取日志直到特定字符串