logstash的grok提取中括号关键词后面的数据到指定字段
比如,现在有一段数据,
[DEBUG] [TASKID:1a-2b_3c] [DATA]
需要提取[TASKID:***] 里面的*数据,也即本例的 1a-2b_3c ,然后放到指定的字段task_id里面。在grok里面写正则:
(?<task_id>(?<=\[TASKID:).*?(?=\]))
在grok debugger里面运行:
总结:
(?<result>(.*)(?=myend)/?)
提取myend之前的数据
(?<result>(?=mybegin)(.*)/?)
提取mybegin之后的数据
(?<result>(?<=mybegin).*?(?=myend))
提取mybegin和myend之间的数据,不包含mybegin和myend
(?<result>(taga).*?(?=tagb))
提取包含taga但不包含tagb的数据
(?<result>(?<=taga).*?(tagb))
提取内容不包含taga但包含tagb
(?<result>(taga).*?(tagb|tagc))
提取以taga开头,以tagb或tagc结尾的、所有包含头尾的数据
(?<result>(taga).*?(?=(tagb|tagc)))
提取以taga开头,以tagb或tagc结尾的不包含头尾的数据
以上结果都最终存放到result字段里面