Splunk Search

How do I cut a string after a certain text and count the results of the string before the cut?

iambobwall
New Member

Here is my current search in Jboss Logs:

index=jboss_app CLASS="foo.bar.bas.classname" MESSAGE="Error doing the thing bob wants to do" OR MESSAGE="Error doing the thing joe wants to do"|stats count by MESSAGE |sort - count

Results show

Error doing the thing for **bob** :user1@company.com AccountNumber01: 4920406079372  13
Error doing the thing for **bob** :user2@company.com AccountNumber01: 4079379507040  12
Error doing the thing for **joe** :user3@company.com AccountNumber01: 1040683729965  11 
Error doing the thing for **joe** :user4@company.com AccountNumber01: 60284967030205  10 

The results I want are to simply count how many results show "Error doing the thing for bob" and "Error doing the thing for joe" and list it as such. Just need to count how many for each.

Thanks!

Tags (2)
0 Karma
1 Solution

renjith_nair
Legend

@iambobwall,

There are multiple ways to do using regex.

If you want "everything" before the "text", then try

|rex field=MESSAGE "(?P<MY_MESSAGE>^(.*?))bob"    --  Result : Error doing the thing

^(.*?) will match everything until it finds the text bob. This could be used if you have a common string (e.g. bob) in every line. You could also use ":" to include bob also part of the string.

|rex field=MESSAGE "(?P<MY_MESSAGE>^(.*?)):"    --  Result : Error doing the thing bob

OR

Use below to search for first 6 words literally if the error message's format is same.

|rex field=MESSAGE "(?P<MY_MESSAGE>(\w+\s){6})"    --  Result : Error doing the thing for bob

Try and let's know if you need any changes to these

---
What goes around comes around. If it helps, hit it with Karma 🙂

View solution in original post

renjith_nair
Legend

@iambobwall,

There are multiple ways to do using regex.

If you want "everything" before the "text", then try

|rex field=MESSAGE "(?P<MY_MESSAGE>^(.*?))bob"    --  Result : Error doing the thing

^(.*?) will match everything until it finds the text bob. This could be used if you have a common string (e.g. bob) in every line. You could also use ":" to include bob also part of the string.

|rex field=MESSAGE "(?P<MY_MESSAGE>^(.*?)):"    --  Result : Error doing the thing bob

OR

Use below to search for first 6 words literally if the error message's format is same.

|rex field=MESSAGE "(?P<MY_MESSAGE>(\w+\s){6})"    --  Result : Error doing the thing for bob

Try and let's know if you need any changes to these

---
What goes around comes around. If it helps, hit it with Karma 🙂

iambobwall
New Member

I tried the "rex" option and it worked like a charm. Thank you!

|rex field=MESSAGE "(?P <\MULTI_SINGLE>\ (\w+\s){11})"|stats count by MULTI_SINGLE|sort - count

Gives me exactly the format and information I am looking for.

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Announcing Modern Navigation: A New Era of Splunk User Experience

We are excited to introduce the Modern Navigation feature in the Splunk Platform, available to both cloud and ...

Modernize your Splunk Apps – Introducing Python 3.13 in Splunk

We are excited to announce that the upcoming releases of Splunk Enterprise 10.2.x and Splunk Cloud Platform ...

Step into “Hunt the Insider: An Splunk ES Premier Mystery” to catch a cybercriminal ...

After a whole week of being on call, you fell asleep on your keyboard, and you hit a sequence of buttons that ...