在Unix系统中匹配文件中的日期

3

我有以下的unix命令,我用它来尝试在文件中找到格式为yyyy-mm-dd的日期:

grep -i -w [\d]{4}-[\d]{2}-[\d]{2}? <filename> 

但出于某种原因,我得到了一个空答案。我是否正确匹配了grep的正则表达式?


可能是 在日志文件中使用当前日期进行 Grep 的重复问题。 - jww
2个回答

1
以下内容可以正常工作,使用bash扩展正则表达式(-E--extended-regexp):
grep -E -i -w "[0-9]{4}-[0-9]{2}-[0-9]{2}" <filename> 

但是,在这种情况下,你应该使用[0-9]而不是\d

如果您想使用\d,则需要指定PERL正则表达式(-P--perl-regexp):

grep -P -i -w "\d{4}-\d{2}-\d{2}" <filename> 

0
你可以尝试以下的grep命令,
grep -oP '\d{4}-\d{2}-\d{2}' file

或者

$ grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}' file

或者

grep -o '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接