如何在Logstash中替换特定字符`后的HMAC模式?
问题描述
现有一条日志消息内容如下:
`The is my sample HMAC message`HMAC HMAC HMAC
希望将其处理为:
`The is my sample HMAC message`
尝试了以下Logstash配置,但会替换所有出现的HMAC:
mutate { gsub => [ "message", "HMAC", "" ] }
需求是仅替换**反引号之后**的HMAC相关内容,请问如何用Logstash的gsub`实现?
解决方案
可以通过正则表达式的捕获分组或正向断言实现精准匹配,分两种场景处理:
场景1:直接去掉反引号之后的所有内容
如果反引号之后只有需要清除的HMAC内容,直接保留反引号及之前的所有内容即可:
mutate { gsub => [ "message", "^(.*`).*$", "\1" ] }
- 正则说明:
^(.*):捕获从字符串开头到最后一个反引号的所有内容(包含反引号).*$:匹配反引号之后的所有字符- 替换为
\1:仅保留捕获到的内容,丢弃后续所有字符
场景2:仅清除反引号之后的HMAC(保留其他内容)
如果反引号之后还有需要保留的非HMAC内容,仅清除其中的HMAC及周围空格:
mutate { gsub => [ "message", "(?<=`)(HMAC\s*)+", "" ] }
- 正则说明:
(?<=):正向断言,确保匹配的内容位于反引号之后(HMAC\s*)+:匹配一个或多个连续的HMAC(包含后续空格)- 替换为空字符串,仅清除目标
HMAC内容
内容的提问来源于stack exchange,提问作者abhisheknayak777
相关产品推荐
相关产品推荐

