簡體   English   中英

Splunk-用點/句點提取字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM