unix - 在 Unix 上匹配文件中的日期

标签 unix sed grep find

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

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

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

最佳答案

以下是有效的,使用 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> 

关于unix - 在 Unix 上匹配文件中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416963/

相关文章:

c - 是什么让线程和进程独一无二?

linux - 如何在 ubuntu 中记录终端击键

linux - 使用 sed 删除与正则表达式匹配的记录

regex - 使用 sed 剪切部分 grep 输出

linux - 根据字典替换事件代码的 Shell 命令

c++ - 用 C++ 计算文件行数的最简洁方法

linux - 使用 sed 删除带有重复字符和增量字符的字符串?

java - SED:需要在字符串中使用 "/"才能使用 sed 进行追加

awk - 如果段落包含存储在变量中的字符串,则打印该段落(空行分隔段落)

bash - 如何使用 grep 在当前目录中搜索具有给定字符串的所有文件,然后将这些文件移动到新文件夹中?