2016-03-28 28 views
0

删除子域名我在日志中具有相同的域名:Logstash:用正则表达式

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

我想在logstash只得到域没有子域。怎么可以在变异gsub

试图做这样的,但它不工作

mutate { 
    gsub => [ "queryname", "(?!([a-zA-Z0-9\-]{0,61})\.([a-zA-Z]{2,6})$)", "" ] 
} 

有点糊涂了,会很乐意的任何建议。感谢

+0

要确认,您只希望选择第一个查询,是吗?或者你想从每一个查询中选择'domain.com'? – Druzion

+1

来自每个字符串的“domain.com”(第二级域名) – kllaud

回答

0

试试这个正则表达式:

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 

的域名将被存储在第二组

+0

对不起,但在logstash中获取所有行,不会分割子域。 – kllaud

相关问题