从路径中提取字段



SPLUNK REGEX

我们有一些数据,其中包含我们想要从源路径中提取的文件夹层次结构,原始数据看起来像这样:

源=/usr/local/intranet/areas/ua1/output/MUN

我们想创建2 Splunk内联正则表达式来提取"内部网";和输出

有人能帮帮我吗

感谢

老实说,我不确定这是否是你想用正则表达式解决的那种工作。你可能更倾向于通过拆分来解析字符串然后从数组中选择你需要的?

无论如何,您都可以这样做:

输入:/usr/local/intranet/areas/ua1/output/MUN

正则表达式:(?:/.+?){2}/([^/]+)(?:/.+?){2}/([^/]+)

则组1将匹配intranet,组2将匹配output

  • (?:/.+?){2}-匹配前斜杠后面的任意字符两次。所以这个匹配/usr/local
  • /([^/]+)-匹配前斜杠,然后在组中匹配部分的内容,直到下一个斜杠。这将匹配/intranet,但将intranet存储在组1中。

然后我们只需重复此操作以获得您想要的下一个片段。

如果你需要两个单独的模式,或者想只匹配相关的部分,而不是把它们放在一起,那么像这样,假设全局修饰符是禁用的:

  • (?<=/)[^/]+(?=(?:/[^/]+){4}$)-匹配intranet.
  • (?<=/)[^/]+(?=/[^/]+$)-匹配output

这个使用后看(?<=…)和前看(?=…)而不是匹配,所以它不包括在最终结果中,不需要组。否则,它遵循基本相同的逻辑。

最新更新