如何从日志文件中提取字符串(日期)
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
我有不寻常的日志
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