【问题标题】:Matching a date in a file on Unix在 Unix 上匹配文件中的日期
【发布时间】:2014-12-12 13:28:39
【问题描述】:

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

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

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

【问题讨论】:

标签: unix sed grep find


【解决方案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> 

【讨论】:

    【解决方案2】:

    你可以试试下面的 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
    

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 2020-10-12
      • 2015-01-25
      相关资源
      最近更新 更多