有一個日誌文件,我想根據內容將其分成幾個文件

有一個日誌文件,我想根據內容將其分成幾個文件

我有一個日誌文件,我想將其分成幾個文件

目錄

*** 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

相關內容