【问题标题】:using sed to grep pattern from log file使用 sed 从日志文件中 grep 模式
【发布时间】:2021-12-13 13:41:32
【问题描述】:

我有以下日志行

2021-10-28 10:26:19,624 INFO [Native-Thread-7f9e6effd700] idol.nifi.connector.GetWeb GetWeb[id=c59c415c-017c-1000-195c-e85818b0a032] Processing: [depth:0] https://qed.qld.gov.au/about-us/rti/disclosure-log/disclosure-log-2015

我想提取日期和单词 Processing: 之后的所有内容,看起来像

2021-10-28 10:26:19 [depth:0] https://qed.qld.gov.au/about-us/rti/disclosure-log/disclosure-log-2015

我不确定如何使用 grep 或 sed 来实现这一点?

#!/bin/bash cat ./logs/*.log | grep Processing: | grep -E "(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)"

据我所知。

【问题讨论】:

    标签: sed grep


    【解决方案1】:
    sed 's/,.*Processing://' file
    

    输出:

    2021-10-28 10:26:19 [深度:0] https://qed.qld.gov.au/about-us/rti/disclosure-log/disclosure-log-2015

    请参阅:man sedThe Stack Overflow Regular Expressions FAQ

    【讨论】:

      【解决方案2】:

      使用sed

      $ sed 's|\([^,]*\).*Processing:\(.*\)|\1\2|' input_file
      2021-10-28 10:26:19 [depth:0] https://qed.qld.gov.au/about-us/rti/disclosure-log/disclosure-log-2015
      

      \([^,]*\) - 匹配第 1 组中第一个逗号 , 之前的所有内容

      .*Processing: - 排除逗号后的所有内容,包括Processing:

      \(.*\) - 匹配第 2 组中的所有其他内容

      【讨论】:

        猜你喜欢
        • 2021-05-01
        • 1970-01-01
        • 2011-12-27
        • 2017-06-11
        • 1970-01-01
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        相关资源
        最近更新 更多