我目前正在嘗試創建一個自動化進程來動態解析特別大的日誌文件(25MB +)的選擇,並通過Java Servlet將其返回給用戶。從日誌文件中獲取範圍模式中的特定行
由於這些日誌的大小,我試圖執行Linux解析命令來檢索與用戶相關的部分,然後將它們加載到內存中。這些部分可以分佈在整個日誌中。
我仍然處於獲得正則表達式和文本解析工具(比如sed)的早期階段,我希望有人能指出我正確的方向來解決當前的問題。
我有一系列的日誌是指一行上的特定項目(例如KEY1),後面是關於此項目的未知數量的信息行。
然後,日誌會切換到下一個項目,重複
我試圖找出是否有基於Linux文本命令的任意組合,這可能採取格式的文件
This is the first line and should not display
This is a section containing the text KEY1
Line 1
Line 2
Line 3
Line 4
This is a section containing the text KEY2
BadLine 1
BadLine 2
This is a second section containing the text KEY1
Line 5
Line 6
This is a section containing the text KEY3
BadLine 3
BadLine 4
BadLine 5
BadLine 6
This is a third section containing the text KEY1
Line 7
Line 8
Line 9
This is the last line
和返回:
This is a section containing the text KEY1
Line 1
Line 2
Line 3
Line 4
This is a second section containing the text KEY1
Line 5
Line 6
This is a third section containing the text KEY1
Line 7
Line 8
Line 9
This is the last line
命令
sed -n '/KEY1/,/KEY2/p' file
抓住第一部分的工作,但我很難找到一種通用的方式來提取我需要的一切。
任何幫助,將不勝感激。
感謝
- 編輯 -
2013/06/20 03:10:01 PM| FINE |S9180 |[Device] [ID:128]
foo
bar
foo
bar
------------------------------------------
foo
bar
------------------------------------------
2013/06/20 03:10:02 PM| FINE |S9180 |[Device] [ID:132]
Other foo
Other bar
------------------------------------------
Other foo
Other bar
Other foo
Other bar
------------------------------------------
2013/06/20 03:10:03 PM| FINE |S9180 |[Device] [ID:128]
foo
bar
------------------------------------------
foo
bar
foo
bar
------------------------------------------
foo
bar
爲了澄清,這是我的工作的格式。我正在嘗試獲取日誌中特定設備的所有信息。例如下的鍵[ID:128]的所有文本,但下忽略所述部分[ID:132](或任何其他ID比ID:128因爲沒有該設備將在下面被未來特定順序)
嘿,你能給一些合理的例子說明KEY1,KEY2和KEY3是怎麼樣的? –
我已更新該帖子以供澄清。乾杯。 – JamesA