有没有办法使用 grok 使用字符编号分解消息?

Is there a way to use grok to break up a message using the character numbers?

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

“01234567895467894ACCP 844” 在哪里 0123456789 是 phone 号码, 5467894授权号, ACCP 是授权的类型,但例如可能有 6 长,所以它之后有 2 个空格。 844 一些其他号码。我需要做的是根据字符数分隔行。这将永远不变。

所以像 %{CHAR 0-10:Phonenumber)%{CHAR 11-18:Mandate}%{CHAR 19-24:Type} 有什么方法可以使用 groks 做到这一点吗?我试着寻找但没有找到类似的东西。

以下 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"
}