我有一大堆loglines(或多或少沒有文檔),需要解析它們。解析本身不會是一個大問題,但首先我需要知道文件內有多少種不同的行。從輸入自動生成模式(和/或正則表達式)
除了我有像短錯誤一樣的真正不同的行,最多隻能在一些字段中有所不同的行,比如他們使用的證書的完整用戶名和一些數字,例如傳輸時間。
獲得一個生成的模式與差異/共同的東西關於一組相同的線會很好。
是否有任何工具可以做到這一點,並分析大量輸入和輸出所有行中的常見東西?
我有一大堆loglines(或多或少沒有文檔),需要解析它們。解析本身不會是一個大問題,但首先我需要知道文件內有多少種不同的行。從輸入自動生成模式(和/或正則表達式)
除了我有像短錯誤一樣的真正不同的行,最多隻能在一些字段中有所不同的行,比如他們使用的證書的完整用戶名和一些數字,例如傳輸時間。
獲得一個生成的模式與差異/共同的東西關於一組相同的線會很好。
是否有任何工具可以做到這一點,並分析大量輸入和輸出所有行中的常見東西?
我不知道任何這樣的工具。我可能只是打開文件,對它進行排序,並刪除重複類型的消息。
例如,如果您有:
Error while writing char 45 Error while writing char 8 Error while writing char 903
我將其降低到
Error while writing char #
我不知道你請求的工具是可行的。考慮這些錯誤消息:
I/O Error: couldn't open file abc.txt I/O Error: failed while writing to xyz.txt Database Error: couldn't open database MyDB
什麼算法可以告訴你的是,第二個錯誤是一號的變化,但第三個錯誤是一種新的類型?
我認爲你必須手動完成,但排序會使它更容易。
nope,有不同長度的字段,其他值等,不重複 - 每行都是uniq:/。 – 2009-10-23 17:14:28
瞭解。我的意思是重複類型。我會更新我的答案。 – 2009-10-23 17:17:17
我想不出用正則表達式寫這個的方法。
但是,如何將日誌複製並粘貼到Excel中,然後對它們進行排序呢?我認爲應該更容易確定有多少種不同類型的消息。
或者你可以導入到Access或SQL之類的東西,然後你可以使用 SELECT DISTINCT
進一步減少結果。
相似:「如何檢測字符串列表中的常見子字符串」http://stackoverflow.com/questions/1410822/how-can-i-detect-common-substrings-in-a-list-of-字符串 – 2009-10-23 18:21:26