我在Splunk Answers上没有运气,所以我在这里发帖。
无法想出这一点,任何帮助表示赞赏。数据很敏感,但我会尽量清楚。
我有一个XML文件中的数据,如下所示:
<ROW>
<FIELD1>A</FIELD1>
<FIELD2>randomdata</FIELD2>
<FIELD3>randomdata</FIELD3>
<FIELD4>randomdata</FIELD4>
</ROW>
<ROW>
<FIELD1>B</FIELD1>
<FIELD2>randomdata</FIELD2>
<FIELD3>randomdata</FIELD3>
<FIELD4>randomdata</FIELD4>
</ROW>
现在,有些人可能会认为这是编码错误的XML。
我使用SEDCMD
命令快乐地索引了这些数据,并将<
和>
替换为<
和>
,以使其成为可读的XML。每个ROW
都是一个新事件,但多个包含在同一个XML文件中。
难题是......我想根据FIELDS2,3,4
FIELD1
个名称
所以,
如果FIELD1 = A
将FIELD3
替换为FIELD99
如果FIELD1 = B
将FIELD4
替换为FIELD37
等...
我尝试使用props.conf中的[rule::blabla]
节来分配不同的源类型。但原始数据中都存在A
和B
。
这是我的props.conf
[st]
SHOULD_LINEMERGE=true
BREAK_ONLY_BEFORE=<ROW>
NO_BINARY_CHECK=true
disabled=false
DATETIME_CONFIG=NONE
SEDCMD-1=s/>/>/g
SEDCMD-2=s/</</g
MAX_EVENTS=1000
帮助表示赞赏!
答案 0 :(得分:0)
您可以在props.conf中执行此操作,如下所示:
EVAL-FIELD3 = if(FIELD1==A,FIELD99,FIELD3)
EVAL-FIELD4 = if(FIELD1==B,FIELD37,FIELD4)
如果这比您描述的要复杂一点,您可能需要使用CASE语句。您可以在搜索栏上使用eval来测试结果,然后再将其集成到props.conf中。