Logstash:使用正则表达式删除子域

时间:2016-03-28 08:28:50

标签: regex logstash gsub

我的日志中有相同的域名:

queryname= domain.com
queryname= sub1.domain.com
queryname= sub-2.sub1.domain.com
queryname= suB3.sub-2.sub1.domain.com

我想只在logstash中进入没有子域的域。如何在mutate gsub中做到这一点?

尝试这样做,但它不起作用

mutate { 
  gsub => [ "queryname", "(?!([a-zA-Z0-9\-]{0,61})\.([a-zA-Z]{2,6})$)", "" ]
}
有点困惑,会很高兴任何建议。感谢

1 个答案:

答案 0 :(得分:0)

试试这个RegEx:

queryname=\s*([\w-]+\.)*(\w+\.\w+)$

Live Demo on Regex101

工作原理:

queryname=\s*        # 'queryname= ' Part
(                    # Sub-Domains
    [\w-]+               # Letters
    \.                   # . (Dot)
)*                       # Sub-Domains are Optional
(                    # domain.com
    \w+                  # Letters (domain)
    \.                   # . (Dot)
    \w+                  # Letters (com)
)
$                    # ... String ends with Sub-Domain

该域名将存储在第二组