2016-09-19 41 views
-1

數據我有一個文件的完整日誌的最佳途徑,我想從這些日誌,日誌樣子提取一些數據:是正則表達式來提取日誌

IP_adress - - [Date_time] "method" response_nb time "page" "UA" "IP_adress" 

我想提取IP_adress和UA。 使用正則表達式是一個好主意從這些日誌中提取數據或者是否有其他方式正確執行它?

+0

嘗試logstash,您必須編寫grok模式,該模式可能具有預定義的模式以支持您的需求。 – AlokThakur

+2

您對「最佳方式」的標準是什麼?沒有這些信息,你只是在徵求我們的意見。如果你問是否可以使用正則表達式,是的,當然是,只是正確的做法可能有點困難。 – 4castle

回答

2

只需拆分字符串並獲取最後兩個元素。

>>> 
>>> str = 'IP_adress - - [Date_time] "method" response_nb time "page" "UA" "IP_a 
dress"' 
>>> tmp_list = str.split() 
>>> 
>>> tmp_list 
['IP_adress', '-', '-', '[Date_time]', '"method"', 'response_nb', 'time', '"page 
"', '"UA"', '"IP_adress"'] 
>>> tmp_list[-1] 
'"IP_adress"' 
>>> tmp_list[-2] 
'"UA"' 
>>> 

如果需要第一IP地址...

>>> tmp_list[0] 
'IP_adress' 
>>> 

從去年IP地址如下替換雙引號。

>>> 
>>> tmp_list[-1].replace('"','') 
'IP_adress' 
>>>