Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在logstash中使用mutate和gsub替换部分值_Regex_Logstash - Fatal编程技术网

Regex 如何在logstash中使用mutate和gsub替换部分值

Regex 如何在logstash中使用mutate和gsub替换部分值,regex,logstash,Regex,Logstash,我的日志文件中有如下内容: DATATYPE::SERVICEPERFDATA TIMET::1519222690 HOSTNAME::localhost SERVICEDESC::Total Processes SERVICEPERFDATA::procs=59;250;400;0; SERVICECHECKCOMMAND::check_local_procs!250!400!RSZDT HOSTSTATE::UP HOSTSTATETYPE

我的日志文件中有如下内容:

DATATYPE::SERVICEPERFDATA       TIMET::1519222690       HOSTNAME::localhost     SERVICEDESC::Total Processes    SERVICEPERFDATA::procs=59;250;400;0;    SERVICECHECKCOMMAND::check_local_procs!250!400!RSZDT  HOSTSTATE::UP    HOSTSTATETYPE::HARD     SERVICESTATE::OK        SERVICESTATETYPE::HARD
我想替换
SERVICEPERFDATA::procs=59;250;400;0;我的消息中的这个键值对是这样的

SERVICEPERFDATA::59
因此,我可以使用kv过滤器将数据拆分为键和值

我试过使用Logstash mutate和gsub,但找不到合适的正则表达式来实现我的目标

谢谢,
Charan

您可以使用捕获组捕获正则表达式的一部分,并在mutate/gsub配置的替换部分中使用它

mutate {
  gsub => ["message","(?<=SERVICEPERFDATA::)procs=(\d+);\S+", "\1"]
}
变异{

gsub=>[“message”,(?Regex:或
)(?您可以删除第一个和第三个元素的捕获组:。此外,如果您只想为
SERVICEPERFDATA执行此操作::
您可以在
前面加上前缀(?@ctwheels)谢谢您的评论。我已经用您的建议更新了我的答案。
mutate {
    gsub => [
      "fieldname", "procs=([^;]+)\S+", "\1",
    ]
}