有一个日志文件,我想根据内容将其分成几个文件

有一个日志文件,我想根据内容将其分成几个文件

我有一个日志文件,我想将其分成几个文件

目录

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

相关内容