我有一個海量日誌文件,其中包含設備驅動程序失敗的示例。驅動程序應該提供來自客戶端應用程序讀取的緩衝區的數據。驅動程序在讀取前後記錄緩衝區中的數據量,並以512字節塊將數據傳輸到客戶端。日誌文件中有很多垃圾數據隨機散佈在多行中。下面是一個簡單的例子或一個正常的工作案例。VIM - 正則表達式 - 多行搜索查詢字段值的更改
Before Transfer 1: Available 512 bytes
... junk data
After Transfer 1: Available 0 bytes
... junk data
Before Transfer 2: Available 512 bytes
... junk data
After Transfer 2: Available 0 bytes
在錯誤的情況下,它看起來像這樣(下轉數從一個具體的例子就是,這個問題並不總是對轉讓#35發生):
Before Transfer 34: Available 512 bytes
... junk data
After Transfer 34: Available 0 bytes
... junk data
Before Transfer 35: Available 512 bytes
... junk data
After Transfer 35: Available 512 bytes
所以,我試圖匹配多行查詢,其中單個傳輸報告「Before」和「After」日誌語句中的「available」相同的量。
我已經試過這樣::%s/Before Transfer.* 512 bytes\._*After Transfer.* 512 bytes
,並幫助找到的問題的一些,但數額可能是1024或256,或在「之前」和256個字節的若干倍「後」日誌語句。
此外,此查詢似乎突出顯示了VIM中超過一半的文件緩衝區。我假設這是因爲它找到了其他查詢中的匹配查詢(即:嵌套結果),因爲我沒有提供一種方法來匹配對應的「之前」/「之後」實例編號在日誌文件中。
我想建立一個正則表達式,通過每個匹配「之前」和「之後」的日誌行雲,看數據值(字節數)是相同的兩個「之前」和「之後」。如果滿足這兩個條件,就正則表達式搜索查詢而言,它是「匹配」。所需的輸出,在文件的情況下,我更多或更少的人工分析,就像這樣:
Before Transfer 35: Available 512 bytes
After Transfer 35: Available 512 bytes
Before Transfer 105: Available 256 bytes
After Transfer 105: Available 256 bytes
Before Transfer 220: Available 512 bytes
After Transfer 220: Available 512 bytes
Before Transfer 250: Available 2048 bytes
After Transfer 250: Available 2048 bytes
如何去建立這樣的查詢?
謝謝。