如何将一个模式摸索成多个字段名称



如何将匹配的模式摸索到多个字段名称中?

是否可以使用 Grok 解析和分配匹配的模式两次?

最小、完整、可验证的示例

以这个日志行为例:

09/26/2019 基思·米克拉斯

应用此 grok 过滤器:

%{DATE:date}s*%{WORD:first_name}s*%{WORD:last_name}

这会产生:

{
"date": [
[
"09/26/2019"
]
],
"first_name": [
[
"Keith"
]
],
"last_name": [
[
"Miklas"
]
]
}

我需要的是一个像这样的 grok 过滤器:

%{DATE:date}s*%{WORD:first_name,fn}s*%{WORD:last_name,ln}
%{DATE:date}s*%{WORD:first_name&fn}s*%{WORD:last_name&ln}
%{DATE:date}s*%{WORD:first_name|fn}s*%{WORD:last_name|ln}

产生这个:

{
"date": [
[
"09/26/2019"
]
],
"first_name": [
[
"Keith"
]
],
"fn": [
[
"Keith"
]
],
"last_name": [
[
"Miklas"
]
],
"ln": [
[
"Miklas"
]
]
}

您可以使用指定的捕获组包装所需的部分:

%{DATE:date}s*(?<fn>%{WORD:first_name})s*(?<ln>%{WORD:last_name})
^^^^^^                  ^   ^^^^^^                 ^

输出:

{
"date": [
[
"09/26/2019"
]
],
"fn": [
[
"Keith"
]
],
"first_name": [
[
"Keith"
]
],
"ln": [
[
"Miklas"
]
],
"last_name": [
[
"Miklas"
]
]
}

相关内容

  • 没有找到相关文章

最新更新