【问题标题】:How to extract string (date) from log file如何从日志文件中提取字符串(日期)
【发布时间】:2020-02-13 08:37:36
【问题描述】:

我有不寻常的日志

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

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

有趣的部分是我的日志在日期中附加了不为零的空间

【问题讨论】:

    标签: string date logging grep extract


    【解决方案1】:

    对于这个例子,我可能会这样做:.*[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}.

    【讨论】:

    • 任何时候我的朋友。
    • 我可以再问一个问题吗?如果日志有.. 时间之后有更多字符串,比如 Jan 3 11:43:50 String1 string[123]: log message here 它可以是这样吗?
    • 嗯,这应该不会导致任何问题与您感兴趣的“Jan 3 11:43:50”部分匹配。或者至少我没有看到任何问题。
    • 不,您赠送的第一个解决方案绝对没问题,可以节省一天的时间.. 只是.. 以防万一想要更准确.. 顺便说一句,第二个解决方案没有显示任何内容.. 但它没问题,因为第一个修复它..谢谢
    • 嗯,很奇怪。它在这里工作:online-utility.org/text/grep.jsp。不客气。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多