如何在复杂模式中 grep 日期值?
How can I grep date value in complex pattern?
我将这个 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个字符(数字and/or不是)。
我该怎么做?谢谢。
输出:
1504091545
1504081345
1504071235
1403021131
你可以使用这个grep
:
grep -oP '\d{10}(?=\.)' file
1504091545
1504081345
1504071235
1403021131
或根据您的问题限制更多:
grep -oP '\d{10}(?=\.(YAT|ZET))' file
我将这个 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个字符(数字and/or不是)。
我该怎么做?谢谢。
输出:
1504091545
1504081345
1504071235
1403021131
你可以使用这个grep
:
grep -oP '\d{10}(?=\.)' file
1504091545
1504081345
1504071235
1403021131
或根据您的问题限制更多:
grep -oP '\d{10}(?=\.(YAT|ZET))' file