有没有一种方法可以使用grok使用字符号分解消息?

时间:2020-06-30 11:20:42

标签: elasticsearch logstash logstash-grok

例如,我需要分解的日志是这样的

“ 01234567895467894ACCP 844” 哪里 0123456789是电话号码, 5467894授权编号, ACCP是授权的类型,但是例如可以是6个长,因此之后可以有2个空格。 844个其他号码。我需要做的是根据字符数分隔行。它将始终保持不变。

所以像%{CHAR 0-10:Phonenumber)%{CHAR 11-18:Mandate}%{CHAR 19-24:Type}之类的东西是否可以使用怪人来完成?我尝试寻找,但没有找到类似的东西。

1 个答案:

答案 0 :(得分:3)

以下regular expression based grok expression可让您捕获期望的内容:

(?<Phonenumber>\d{10})(?<Mandate>\d{7})(?<Type>[A-Z\s]{4,})(?<Other>\d{3,})

您会得到的:

{
  "Phonenumber": "0123456789",
  "Mandate": "5467894",
  "Type": "ACCP  ",
  "Other": "844"
}