【问题标题】:grep for two words in log file that are not in same linegrep 查找日志文件中不在同一行的两个单词
【发布时间】:2019-08-21 18:11:05
【问题描述】:
2019/08/20 18:36:29.710 [1cdc10a5-7d27-4cf2-8890-0f8f0b21798c Dispatcher] [INFO ] com.vmware.nfc.platform.streaming.infraprocessors.processors.MetricsInfraProcessor.handleMessage(MetricsInfraProcessor.java:39) - DEBUG - Parsed:metric_entry {
  reference_oid {
    oid: "2:51323330635433366"
  }
  metric_name: "up_time"
  metric_type: COUNTER
  metric_point {
    timestamp: 1566324769337211363
    value: 73743.0
  }
}

我需要在我的日志文件中搜索 oid 为“2:51323330635433366”和 metric_name 为“up_time”的模式。

root$ grep -A3 2:51323330635433366 patten1.log | grep up_time
  metric_name: "up_time"

它给了我一行metric_name: "up_time"。我想打印整个块。

我该怎么做?

【问题讨论】:

标签: grep


【解决方案1】:

如果您在每个部分之间有一个空行,如下例所示,您可以使用gnu awk 并将记录选择器设置为空。

Eks 数据

2019/08/20 18:36:29.710 [1cdc10a5-7d27-4cf2-8890-0f8f0b21798c Dispatcher] [INFO ] com.vmware.nfc.platform.streaming.infraprocessors.processors.MetricsInfraProcessor.handleMessage(MetricsInfraProcessor.java:39) - DEBUG - Parsed:metric_entry {
  reference_oid {
    oid: "2:51323330635433366"
  }
  metric_name: "up_time"
  metric_type: COUNTER
  metric_point {
    timestamp: 1566324769337211363
    value: 73743.0
  }
}

2019/08/20 18:36:29.710 [1cdc10a5-7d27-4cf2-8890-0f8f0b21798c Dispatcher] [INFO ] com.vmware.nfc.platform.streaming.infraprocessors.processors.MetricsInfraProcessor.handleMessage(MetricsInfraProcessor.java:39) - DEBUG - Parsed:metric_entry {
  reference_oid {
    oid: "2:51323d30635433366"
  }
  metric_name: "up_time"
  metric_type: COUNTER
  metric_point {
    timestamp: 1566324769337211363
    value: 73743.0
  }
}

然后awk 将与块一起使用。

awk -v RS="" '/2:51323330635433366/ && /up_time/' file
2019/08/20 18:36:29.710 [1cdc10a5-7d27-4cf2-8890-0f8f0b21798c Dispatcher] [INFO ] com.vmware.nfc.platform.streaming.infraprocessors.processors.MetricsInfraProcessor.handleMessage(MetricsInfraProcessor.java:39) - DEBUG - Parsed:metric_entry {
  reference_oid {
    oid: "2:51323330635433366"
  }
  metric_name: "up_time"
  metric_type: COUNTER
  metric_point {
    timestamp: 1566324769337211363
    value: 73743.0
  }
}

还有其他方法可以做到这一点,具体取决于数据的分离方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2013-04-29
    • 2019-08-13
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多