Splunk Search

How can I split values based on two possible delimiters?

smhsplunk
Communicator
    | eval field2=mvindex(split(word, " "),2) 

How can I split based on either space " " or comma ","
Beforehand, I do not know which delimiter will be there, so I want to use both.

1 Solution

niketn
Legend

You can try replace command on one of the delimiter fields and replace with other delimiter (in following case comma replaced with space) and then use single delimiter for split(in this case only delimiter will be space:

your base search | eval word=replace(word,","," ") | eval field2=mvindex(split(word, " "),2)

____________________________________________
| makeresults | eval message= "Happy Splunking!!!"

View solution in original post

lakromani
Builder

This is how I wold do it. You take the field where you have the word and then split it inn to two new field.

your search | rex field=word "(?<field1>\w+)[\s,](?<field2>\w+)"

Then you should have first part in field1 and second part in field2

0 Karma

niketn
Legend

You can try replace command on one of the delimiter fields and replace with other delimiter (in following case comma replaced with space) and then use single delimiter for split(in this case only delimiter will be space:

your base search | eval word=replace(word,","," ") | eval field2=mvindex(split(word, " "),2)

____________________________________________
| makeresults | eval message= "Happy Splunking!!!"

smhsplunk
Communicator

how can I skip a space (if field2 is empty) and chose the next character , would I have to use if statement ?

0 Karma

niketn
Legend

Can you give example of that word? If condition can definitely be used.

____________________________________________
| makeresults | eval message= "Happy Splunking!!!"
0 Karma

somesoni2
SplunkTrust
SplunkTrust

You can use makemv command with tokenizer option to achieve the same. Try something like this

your current search | eval field2=word | makemv tokenizer="(\w+)" field2

OR

your current search | eval field2=word | makemv tokenizer="([^\s,]+)" field2

Yepeza
Path Finder

Creative solution to make your search a lot less cluttered.

0 Karma

gokadroid
Motivator

Why don't you rex the space into a comma first and then split on comma only:

your base query to give you word
| rex mode=sed field=word "s/\ /,/g"
| split now on comma here
0 Karma
Get Updates on the Splunk Community!

What’s New in Splunk Cloud Platform 9.1.2308?

Hi Splunky people! We are excited to share the newest updates in Splunk Cloud Platform 9.1.2308! Analysts can ...

Index This | Why do they call it hyper text?

November 2023 Edition Hayyy Splunk Education Enthusiasts and the Eternally Curious!  We’re back with another ...

State of Splunk Careers 2023: Career Resilience and the Continued Value of Splunk

For the past three years, Splunk has partnered with Enterprise Strategy Group to conduct a survey that gauges ...