[英]Splunk: How to use multiple regular expressions in one query?
我有四個正則表達式,我想用於一個查詢。 所有正則表達式本身都可以,但我沒有找到如何在 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
完成……但這並不總是可能的
您可以使用 OR |
組合正則表達式|
運算符,但使用多個rex
命令要容易得多。 使用多個命令的優點是允許關鍵字與順序無關。
source="xyz.log"
|rex field=_raw "(?<time>\d{4}.\d{2}.\d{2}\s\d{2}.\d{2}.\d{2}.\d{3})"
|rex "deviceId...(?<deviceId>\d+)"
|rex "error....code...(?<errorCode>\w+)"
|rex "\\\"message...(?<errorMessage>.*?)\\\""
|table time deviceId errorCode errorMessage
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.