# Help for parsing

**URL:** https://discuss.elastic.co/t/help-for-parsing/49388
**Category:** Logstash
**Created:** [May 6, 2016, 9:30am UTC](https://discuss.elastic.co/t/help-for-parsing/49388 "2016-05-06T09:30:28Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Christian16](https://avatars.discourse-cdn.com/v4/letter/c/a9a28c/32.png) [@Christian16](https://discuss.elastic.co/u/Christian16)
#### Post date: [May 6, 2016, 9:30am UTC](https://discuss.elastic.co/t/help-for-parsing/49388/1 "2016-05-06T09:30:28Z")

</div>

Hello,  
I'm trying to parse this log thanks to kv plugin:  
`[TXN_ID]: CO151231.2259.A38404[SERV]:CASHOUT[AMT]:2800[PR_MSISDN]:IND03`

So i created a pattern as following:  
`VAR \[%{DATA}\]%{GREEDYDATA}`

And my logstash config:

```
input {
    stdin{}
}

filter {
    grok {
        patterns_dir => "./patterns"
        match => ["message", "%{VAR:TOPARSE}%{VAR:TOPARSE}%{VAR:TOPARSE}%{VAR:TOPARSE}"]
    }

  kv {
        source => "TOPARSE"
        include_brackets => true
        value_split => ":"
  }
}

output {
  stdout {
    codec => rubydebug
  } 
} 

```

The output:

```
{
       "message" => "[TXN_ID]: CO151231.2259.A38404[SERV]:CASHOUT[AMT]:2800[PR_MSISDN]:IND03",
      "@version" => "1",
    "@timestamp" => "2016-05-06T09:25:01.055Z",
          "host" => "christian-HP-Compaq",
       "TOPARSE" => [
        [0] "[TXN_ID]: CO151231.2259.A38404",
        [1] "[SERV]:CASHOUT",
        [2] "[AMT]:2800",
        [3] "[PR_MSISDN]:IND03"
    ],
        "TXN_ID" => "CO151231.2259.A38404",
          "SERV" => "CASHOUT",
           "AMT" => "2800",
     "PR_MSISDN" => "IND03"
}

```

So it's working well but I have to do in the grok "match" **_%{VAR:TOPARSE}_** four time. But in my logs the paramater's number can change so I tried to do _ **%{VAR:TOPARSE}+** _ but it doesn't work.  
Any ideas ? I'm sure it's easy but I can't find 😕

Sincerely,  
Chris.

---

<div class="post-metadata">

### Author: ![fbaligand](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fbaligand/32/5657_2.png) [@fbaligand](https://discuss.elastic.co/u/fbaligand)
#### Post date: [May 6, 2016, 9:33pm UTC](https://discuss.elastic.co/t/help-for-parsing/49388/2 "2016-05-06T21:33:43Z")

</div>

Maybe you could try `(%{VAR:TOPARSE})+` or `(%{VAR:TOPARSE})*`

---

<div class="post-metadata">

### Author: ![fbaligand](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fbaligand/32/5657_2.png) [@fbaligand](https://discuss.elastic.co/u/fbaligand)
#### Post date: [May 7, 2016, 8:05am UTC](https://discuss.elastic.co/t/help-for-parsing/49388/3 "2016-05-07T08:05:54Z")

</div>

I made some tests, and found a solution that works, without using grok at all :

```
kv {
  source => "message"
  value_split => ":"
  field_split => "\["
  trimkey => "\]"
}
```

---

<div class="post-metadata">

### Author: ![Christian16](https://avatars.discourse-cdn.com/v4/letter/c/a9a28c/32.png) [@Christian16](https://discuss.elastic.co/u/Christian16)
#### Post date: [May 9, 2016, 7:08am UTC](https://discuss.elastic.co/t/help-for-parsing/49388/4 "2016-05-09T07:08:50Z")

</div>

Thanks a lot, it works fine 😃

---

<div class="post-metadata">

### Author: ![fbaligand](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fbaligand/32/5657_2.png) [@fbaligand](https://discuss.elastic.co/u/fbaligand)
#### Post date: [May 9, 2016, 7:42am UTC](https://discuss.elastic.co/t/help-for-parsing/49388/5 "2016-05-09T07:42:28Z")

</div>

Nice ! 🙂

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [July 6, 2017, 4:58am UTC](https://discuss.elastic.co/t/help-for-parsing/49388/6 "2017-07-06T04:58:37Z")

</div>


