【问题标题】:How can i add a character at the beginning of a field content?如何在字段内容的开头添加字符?
【发布时间】:2021-09-28 14:34:11
【问题描述】:

我正在尝试在 logstash 中字段内容的开头添加一个字符。我在网上只找到了如何使用 gsub 插件在最后添加它,如下所示:

dissect {
        mapping => {"message" => "%{message}<%{payload}"}
      }
      mutate {
        gsub => ["payload", "$", "<"]
      }

但是如果我想在开头添加“

【问题讨论】:

    标签: elasticsearch logstash kibana filebeat


    【解决方案1】:

    您问题中的过滤器使用正则表达式来查找放置&lt; 的位置。使用$,它匹配字符串的结尾

    mutate {
       gsub => ["payload", "$", "<"]
    }
    

    查找字符串开头的正则表达式是^。所以你必须像这样修改你的过滤器:

    mutate {
       gsub => ["payload", "^", "<"]
    }
    

    如果您只想在 &lt; 不存在时添加它:

    mutate {
       gsub => ["payload", "^", "^(?!<)"]
    }
    

    这里正则表达式的(?!&lt;) 部分检查&lt; 是否不存在(negative lookahead);如果已经有一个,则正则表达式将不匹配并且不会添加 &lt;

    【讨论】:

    • 如果我想把“
    • 谢谢你,你是天使。有没有网站可以找到这个正则表达式?
    • 我添加了一个链接,指向我找到正则表达式语法的问题(我知道它存在,但不是确切的语法)。使用正则表达式时,我通常使用 regex101.com 来测试它们(例如 here 我在你的案例中使用的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2011-12-06
    • 2012-07-20
    • 2019-01-10
    相关资源
    最近更新 更多