regex - Splunk:如何在一个查询中使用多个正则表达式?
问题描述
我有四个正则表达式,我想将它们用于一个查询。所有正则表达式本身都可以,但我没有找到如何在 pne 查询中一起使用它们:
这些是正则表达式:
表达式 1:
(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3})
表达式 2:
deviceId...(?<deviceId>\d+)
表达式 3:
error....code...(?<errorCode>\w+)
表达式 4:
"\"message...(?<errorMessage>.*?)\"
我在 Splunk 中尝试了这一点:
source="xyz.log" |rex field=_raw "(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3}) deviceId...(?<deviceId>\d+) error....code...(?<errorCode>\w+) "\"message...(?<errorMessage>.*?)\"" |table time deviceId errorCode errorMessage
但我得到了一个错误。
解决方案
我通常会尽量避免将多个字段提取放在一个rex
相反,我选择这样的顺序:
<search>
| rex field=_raw "(?<ip>\d+\.\d+\.\d+\.\d+):"
| rex field=_raw "\d+:(?<port>\d+)"
| rex field=_raw "\d+:\d+\s+(?<msg>.+)"
<more stuff here>
在这个例子中,我将一个 IP、端口和一些消息拉到三个新字段中:ip
, port
,msg
当然,如果可以的话,应该在props.conf
......但这并不总是可能的
推荐阅读
- c++ - C++ 如果一个函数调用另一个接受参数并打印结果的函数。为什么不打印?
- vue.js - 当有人切换视图时,有没有办法在 fullcalendar vue 组件中得到通知?
- java - 在java中设置状态
- javascript - 仅在使用 jQuery 的循环内选中特定复选框
- python - 通过 kv 文件启用/禁用按钮 onclick
- javascript - Svelte 商店功能更新
- python - 如何从api中提取嵌套的json
- php - ImageMagick 置换无法按预期工作
- javascript - 从 javascript 浏览器客户端到 Postgresql
- java - 有很多类来分别处理每个命令会落后于我的电脑吗?