Splunk 搜索中的正则表达式

RegEx in Splunk Search

如您所见,我是 Splunk 的新手,但我继承了尝试找出现有仪表板并对其进行修改的尝试。

现有搜索:

"Policy_Name=Authentication EventCode=1   *$name$*  
| eval TimeOfRequest= _time | table TimeOfRequest, ResultMessage, 
|rex field=_raw (FullyQualifiedUserName=[^/]+$), Calling_Station_Identifier 
| convert timeformat="%b %d, %Y %I:%M:%S %p" ctime(TimeOfRequest)"

输出:

TimeOfRequest Dec 10, 2015 11:04:16 AM
ResultMessage User BobSmith was granted access.
FullyQualifiedUserName domain.local/OU1/OU2/OU3/OU4/Smith, Bob
Calling_Station_Identifier 192.168.1.1

我被要求对输出稍作修改。我需要通过删除完整路径来清理 FullyQualifiedUsername,只留下 LastnameFirstname,即 "Smith, Bob"。我调查了 运行 某种针对该字段的正则表达式,但我没有产生任何结果,只有错误。

下面是我的查询示例:

"Policy_Name=Authentication EventCode=1   *$name$* 
| eval TimeOfRequest= _time 
| table TimeOfRequest, ResultMessage, regex 
       (FullyQualifiedUserName = [^/]+$), Calling_Station_Identifier
| convert timeformat="%b %d, %Y %I:%M:%S %p" ctime(TimeOfRequest)"

Policy_Name=Authentication EventCode=1   *$name$*  
| eval TimeOfRequest= _time | table TimeOfRequest, ResultMessage, 
| rex field=FullyQualifiedUserName "[^/]+$", Calling_Station_Identifier
| convert timeformat="%b %d, %Y %I:%M:%S %p" ctime(TimeOfRequest)

任何试图计算此查询的帮助将不胜感激。

我附近没有 Splunk 实例,但也许这会对您有所帮助:

... | rex field=FullyQualifiedUserName ".+\/(?<first>.+),\s?(?<second>.+)"

如果您想了解更多关于正则表达式测试的信息:

.+\/(.+),\s?(.+)

https://regex101.com/

您应该可以在以下时间后执行此操作:

... | top first second

当然,我假设您所有的日志都具有相同的格式。

来源:http://docs.splunk.com/Documentation/Splunk/6.1/SearchReference/Rex

如果有错误请告诉我...