splunk:从ip地址获取前三个数字

问题描述 投票:1回答:7

我正在尝试获取这种格式的前三组IP地址:10.10.10.10

期望值将是10.10.10

regex ip substr splunk
7个回答
1
投票

试试这个正则表达式:^(.+)(?=\.\d+$)

DEMO

从下次开始,请发布您尝试过的内容以及您计划如何实现解决方案。


0
投票

正则表达式匹配正确的IP4Address:

/^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])$/

Regex101


正则表达式匹配正确的IP4Address的前三个块:

/^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){2}([01]?\d?\d|2[0-4]\d|25[0-5])$/

Regex101


或者当它与第三个块之后的点匹配时仍然很好:

/^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}$/

Regex101


0
投票

能够这样得到它:

rex field=IP "(?<first_three>\d+\.\d+\.\d+)\.\d+"

0
投票

另一种方法。

..| rex field=ip_addr "(?<split_ip>.+)\.[0-9]+"

哪里,

ip_addr - 字段名称

split_ip - 将存储拆分IP地址的变量

例:

Splunk查询:

| stats count | eval ip = "115.124.35.123" | rex field=ip "(?<split_ip>.+)\.[0-9]+" | table split_ip

输出:115.124.35


0
投票

以下对我有用。 rex field=_raw "(?<ip_address>^\d+\.\d+\.\d+\.\d+)"|timechart count by ip_address


0
投票

使用以下正则表达式:

^(?P<result>.+(?=\.\d+))

[链接] https://regex101.com/r/bO4tY5/3


0
投票

https://regex101.com/是这类东西的超级有用工具。它允许您编写正则表达式并实时测试不同的字符串。

获得所需内容后,使用rex命令将其粘贴到Splunk搜索查询中。

要回答您的确切问题:

  1. 正则表达式代码,其中MY_FIELD_NAME_HERE是提取字段的名称:

(?<MY_FIELD_NAME_HERE>\d+\.\d+\.\d+)\.\d+

  1. 正则表达式与regex101中的示例:

https://regex101.com/r/qTTf4e/2

  1. Splunk查询语言所需的命令,其中ORIGNAL_FIELD是保存10.10.10.10和MY_FIELD_NAME_HERE的原始字段是提取的字段:

... | rex field="ORIGNAL_FIELD" "(?<MY_FIELD_NAME_HERE>\d+\.\d+\.\d+)\.\d+"

© www.soinside.com 2019 - 2024. All rights reserved.