grep - grep 查找日志文件中不在同一行的两个单词
问题描述
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"
. 我想打印整个块。
我该怎么做?
解决方案
如果您在每个部分之间有一个空行,如下例所示,您可以使用gnu awk
Record Selector 并将其设置为空。
艾克斯数据
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
}
}
还有其他方法可以做到这一点,具体取决于数据的分离方式。
推荐阅读
- javascript - Node.js - 没有返回响应的正文
- python - 如何在 Pandas 中将带有数字列表的列转换为 np.array 格式
- javascript - 如何键入返回检索到的带扩展结帐会话的承诺?
- c++ - 向量中的第一个重复项
- python - Open3D - 查找不同角度点云的变换
- angular - 在 Angular 应用程序中放置脚本标签的位置
- javascript - 如何将空字符串从 HTML 和 JavaScript 中的 onclick 更改为字符串
- javascript - 博主:如何获得第二张图片
- swiftui - 如何在 SwiftUI 中订阅多个发布者
- python - 巴马纳沙占卜Python程序