Trim字段值,或去掉部分值

Trim field value, or remove part of the value

我正在尝试调整路径名,使其末尾不再附加时间戳。我输入了许多不同的日志,因此为每个可能的日志编写条件过滤器是不切实际的。如果可能的话,我只想 trim 值的最后九个字符。

例如 "random.log-20140827" 会变成 "random.log"

所以如果你知道它总是random.log-某事--

if [path] =~ /random.log/ {
  mutate {
     replace => ["path", "random.log"]
  }
}

如果你想 "fix" 任何有日期的东西:

if [path] =~ /-\d\d\d\d\d\d\d\d/ {
   grok {
      match => [ "path", "^(?<pathPrefix>[^-]+)-" ]
   }
   mutate {
      replace => ["path", "%{pathPrefix}"]
      remove_field => "pathPrefix"
   }
}

在两者中,第一个计算密集度较低。

我还没有测试过这两个,但它们应该可以工作。

mutate {
    gsub => [
        "path", "-\d{8}$", ""
    ]
}