Splunk Search

Can extract or kv command be limited to a specific field?

recurse
New Member

It seems the extract/kv command uses _raw as input to do its parsing. Is there any way to pass a previously extracted field to it instead?

Given this sample event:

| stats count
| eval _raw="messageToParse=\"key1:val1,key2:val2,key3:val3\" user=\"user123\" application=\"app123\" host=\"host123\""

I'm looking for something similar to:

| extract kvdelim=":" pairdelim="," input=messageToParse

to produce a table of:

key1    |    key2    |    key3
val1    |    val2    |    val3

Note: The number of kvps in messageToParse is greater than 50, so parsing them individually via regex is not suitable.

Any ideas?

Tags (4)
0 Karma
1 Solution

somesoni2
Revered Legend

One workaround is this

| gentimes start=-1 | eval _raw="messageToParse=\"key1:val1,key2:val2,key3:val3\" user=\"user123\" application=\"app123\" host=\"host123\"" | table _raw | extract  | rename _raw as temp messageToParse as _raw | extract kvdelim=":=" pairdelim=", " | rename _raw as messageToParse | rename temp as _raw

View solution in original post

0 Karma

somesoni2
Revered Legend

One workaround is this

| gentimes start=-1 | eval _raw="messageToParse=\"key1:val1,key2:val2,key3:val3\" user=\"user123\" application=\"app123\" host=\"host123\"" | table _raw | extract  | rename _raw as temp messageToParse as _raw | extract kvdelim=":=" pairdelim=", " | rename _raw as messageToParse | rename temp as _raw
0 Karma

recurse
New Member

Thanks for the reply - I saw something similar in another post as well I think. The trouble I had was finding a way to limit the results in the table/output to only the keys parsed from messageToParse, instead of including user,application, etc, without manually specifying each key to display.

0 Karma

somesoni2
Revered Legend

If in your final results, you only want to show keys which are included in messageToParse, they try like this

| gentimes start=-1 | eval _raw="messageToParse=\"key1:val1,key2:val2,key3:val3\" user=\"user123\" application=\"app123\" host=\"host123\"" | table _raw | extract  | table messageToParse| rename messageToParse as _raw | extract kvdelim=":=" pairdelim=", " | fields - _raw
0 Karma
Career Survey
First 500 qualified respondents will receive a $20 gift card! Tell us about your professional Splunk journey.
Get Updates on the Splunk Community!

Thanks for the Memories! Splunk University, .conf25, and our Community

Thank you to everyone in the Splunk Community who joined us for .conf25, which kicked off with our iconic ...

Data Persistence in the OpenTelemetry Collector

This blog post is part of an ongoing series on OpenTelemetry. What happens if the OpenTelemetry collector ...

Introducing Splunk 10.0: Smarter, Faster, and More Powerful Than Ever

Now On Demand Whether you're managing complex deployments or looking to future-proof your data ...