在 logstash 配置过滤器中删除部分消息字符串之前和之后
Remove part of message string BEFORE and AFTER in logstash config filter
留言:/merlion/dpa2/cn133ta/j4_sryuo/j4_02_sv_ip
我正在尝试找到一种方法来删除消息中定义的字符串之前和之后的字符串。
在此消息中,常量值为 dpa2,我想丢弃 dpa2(含)和 "cn133ta/" 之前的任何内容。只想保留"j4_sryuo/j4_02_sv_ip".
cn133ta的位置是动态值,不是常量字符串。希望这是有道理的。
目前,我已经尝试了下面的 gsub:
mutate { gsub => [ "dir_path", "/[^./]+/tpa2/", "/" ] }
但我找不到丢弃 AFTER 字符串的方法,在本例中为 "cn133ta/"。
谢谢
您可以使用
mutate { gsub => [ "dir_path", "^.*?/dpa2/[^/]+/", "" ] }
如果 dpa2
子部分紧接在第一个子部分之后,请使用您的方法,
^/[^/]+/dpa2/[^/]+/
^^^^^^
图案详情
^
- 字符串开头
.*?
- 除换行字符外的任何 0+ 个字符,尽可能少
/dpa2/
- 文字字符串
[^/]+/
- /
以外的 1+ 个字符,然后是 /
.
留言:/merlion/dpa2/cn133ta/j4_sryuo/j4_02_sv_ip
我正在尝试找到一种方法来删除消息中定义的字符串之前和之后的字符串。
在此消息中,常量值为 dpa2,我想丢弃 dpa2(含)和 "cn133ta/" 之前的任何内容。只想保留"j4_sryuo/j4_02_sv_ip".
cn133ta的位置是动态值,不是常量字符串。希望这是有道理的。
目前,我已经尝试了下面的 gsub:
mutate { gsub => [ "dir_path", "/[^./]+/tpa2/", "/" ] }
但我找不到丢弃 AFTER 字符串的方法,在本例中为 "cn133ta/"。
谢谢
您可以使用
mutate { gsub => [ "dir_path", "^.*?/dpa2/[^/]+/", "" ] }
如果 dpa2
子部分紧接在第一个子部分之后,请使用您的方法,
^/[^/]+/dpa2/[^/]+/
^^^^^^
图案详情
^
- 字符串开头.*?
- 除换行字符外的任何 0+ 个字符,尽可能少/dpa2/
- 文字字符串[^/]+/
-/
以外的 1+ 个字符,然后是/
.