我有一個日誌文件,我想將其分成幾個文件
目錄
*** Configuration Database
*** Logs
*** Configuration Logs
*** Query Logs
.
.
and so on
問題是,該部分的標題再次出現在正文中,並且各部分之間有適當的資料或日誌,因此我必須搜尋每個標題的第二個實例,並將資料複製到該標題的第二個實例。
身體
*** Configuration Database
(Data/Logs)
*** Logs
(Data/Logs)
*** Configuration Logs
(Data/Logs)
*** Query Logs
(Data/Logs)
我基本上想獲取調試文本文件,針對它運行一個腳本,並將其分解為許多文本文件,目錄中的每個部分一個,保持原始文件完整。所以我基本上會有 debug.txt、Configuration Database.txt、Logs.txt 等,每個部分都有每個部分中的所有數據,直到新部分開始。任何幫助將不勝感激,因為這有點超出我的能力:)
答案1
嘗試這個:
awk '/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];} fname{print>fname}' file
怎麼運作的
awk 隱含地逐行讀取檔案。對於讀取的每一行,我們執行以下操作:
/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];}
對於任何以三顆星和一個空格開頭的行,我們檢查之前是否見過該行。如果有,我們就設定
fname
為該行。否則,我們更新關聯數組seen
以指示我們已經見過該行一次。fname{print>fname}
如果
fname
是非空值,則將目前行寫入名為 的檔案fname
。