背景
我使用sed很多來跟蹤以符合特定模式的行開頭的日誌。我使用這個命令:如何使sed匹配多行的模式
sed -ne '/pattern/ p' infile >outfile
在代碼中,我簡單地追加記錄與標識線,這樣我可以過濾使用它們以後(我的標識是訂單號和線程號..所以例如該日誌行:
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checkout
是爲了7123線程41361.所以上面的sed命令(如果我濾波有關訂購7123
所有日誌)看起來像:
sed -ne '/ORD7123/ p' infile >outfile
問題
當日志用於單個順序/線程組合跨越多行,像這樣的問題發生:
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checking Out With Credit Card for # 3 times. Error: {
"order": "country is required",
"credit_card": "year is not a valid year"
}.
9/14/2017 10:19:59 AM::: ORD7123::TH41347::Successfully Got a something Solution
使用上述sed的命令,我的輸出將看起來像這樣
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checking Out With Credit Card for # 3 times. Error: {
9/14/2017 10:19:59 AM::: ORD7123::TH41347::Successfully Got a something Solution
建議/分析
我們之前遇到過這個問題(我們控制了日誌的創建),我們處理它的方式是用替換新行或類似的東西。在這種情況下,我沒有在日誌中創造太多的控制,所以我必須處理日誌,是
也許這會有幫助嗎? http://www.grymoire.com/Unix/Sed.html#toc-uh-51 – Jerinaw