如何从日志文件中提取字符串(日期)

How to extract string (date) from log file

我有不寻常的日志

Jan  5 11:34:00 log messages here
Jan 13 16:21:00 log messages here

我试试

grep -oE '[0-9]{2}:[0-9]{2}:[0-9]{2}'

如果我结合 tail -n 1 结果是

16:21:00

预期输出

Jan 13 16:21:00

我怎样才能做到这一点?我对正则表达式感到困惑.. 或者有另一种更好的方法?

有趣的部分是我的日志附加了 space 不为零的日期

对于这个例子,我可能会这样做:.*[0-9]{2}:[0-9]{2}:[0-9]{2}。只需匹配时间之前的任何内容,因为那也需要。

或者假设月份始终为 3 个字符长,使其更精确: ^[A-Z][a-z]{2}\s+\d{1,2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}.

能否请您尝试以下操作,这将匹配精确的字符串直到时间。

grep -ioP "(^[a-zA-Z]+\D*\d+\D*(\d+:){2}\d+)"  Input_file