[英]Splunk - extract a field with dot/period
似乎沒有辦法使用來提取字段.
在名字里。
我正在嘗試對舊數據使用字段提取器來創建與新數據JSON字段匹配的字段。
{ "pirate": { "say ": "Shiver me timbers" } }
pirate.say = "Shiver me timbers"
要對此進行測試,您可以執行以下操作:
| metadata type=hosts index=_internal
| head 1
| eval message="Shiver me timbers, goes the pirate"
| table message
| rex field=message "(?<pirate.say>[^,]+)"
但是,在上述“ rex”原型和“字段提取”頁面中,我所做的努力都是相同的錯誤消息。
從“ rex”原型中,我得到:
'rex'命令中的錯誤:編譯正則表達式'(?[^,] +)'時遇到以下錯誤:正則表達式:子模式名稱中的語法錯誤(缺少終止符)
從“字段»字段提取»添加新內容中,我得到:
嘗試保存時遇到以下錯誤:正則表達式:子模式名稱中的語法錯誤(缺少終止符)
關於如何解決這個問題有任何想法嗎?
這里發生了幾種不同的事情。
首先,不,您不能創建一個正則表達式,該正則表達式的字段名稱中包含一個點。 (已在regex101.com上進行了測試,但無效)。
從JSON提取時,splunk可以創建其中帶有點的字段,以表示JSON的層次結構。
另一方面,當從正常數據中自動提取時,splunk通常會用下划線替換無效字符。
要提取JSON,通常使用spath命令。
要提取一個正則表達式,只需為其提供一個有效名稱,然后重命名以包含該點。
| makeresults
| eval message="Shiver me timbers, goes the pirate"
| table message
| rex field=message "(?<piratesays>[^,]+)"
| rename piratesays as "pirate.say"
我已經忘記了您是否需要單引號或雙引號作為奇數名稱,因此,如果這樣不起作用,請嘗試此操作。
| rename piratesays as 'pirate.say'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.