2016-03-28 66 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

相關問題