如何以复杂模式grep日期值?

时间:2015-04-09 13:45:18

标签: regex grep

我将这个grep用于日期:

grep -oP '(?<!\d)201\d{9}'

它为此工作:

xxx_yyy/zzz/www201504091545-xxx.tar.gz

但是当行没有201时,我无法grep日期值,如下所示:

/data/xxxx/yyyy/zzzz/T111504091545.ZET.gz
/data/xxxx/yyyy/zzzz/Z251504081345.YAT.gz
/data/xxxx/yyyy/zzzz/ZT51504071235.YAT.gz
/data/xxxx/yyyy/zzzz/ZA51403021131.YAT.gz

1504 ....是日期值(或1403,1404 ......)。日期值之后有.ZET.gz或.YAT.gz。

在日期之前,有3个字符(数字和/或没有)。

我该怎么做?谢谢。

输出:

1504091545
1504081345
1504071235
1403021131

1 个答案:

答案 0 :(得分:1)

您可以使用此grep

grep -oP '\d{10}(?=\.)' file
1504091545
1504081345
1504071235
1403021131

或根据您的问题限制更多:

grep -oP '\d{10}(?=\.(YAT|ZET))' file