用于复制特定标题下的行并从原始 log.txt 创建新文本文件的脚本

用于复制特定标题下的行并从原始 log.txt 创建新文本文件的脚本

我有一个包含 20k 行的 log.txt 文件。每条线都有数字和 xyz 平面坐标,它们由组分隔。集合可以通过 log.txt 中的 ABC_1、ABC_2 等名称来识别

我想从这个 log.txt 文件中将所有集数据分离到单独的文本文件中,该文件应包含集中的所有数据(例如 ABC_1)。

我的 log.txt 如下所示。

ABC_1: 
1, (xyz coordinates)
2, (xyz coordinates)
3, (xyz coordinates)

 .... Continue
ABC_2: 
101, (xyz coordinates)
102, (xyz coordinates)
103, (xyz coordinates)

 .... Continue
ABC_3: 
201, (xyz coordinates)
202, (xyz coordinates)
203, (xyz coordinates)

.... Continue
ABC_99: 
9991, (xyz coordinates)
9992, (xyz coordinates)
9993, (xyz coordinates)

.... Continue

我想创建一个脚本,它可以从单个 log.txt 文件中为我提供 99 个单独的文本文件,并且应将其命名为 set name ABC_1.TXT, ABC_2.TXT... to ABC_99.TXTfrom log.txt 。

答案1

与 csplit

csplit -s -b %d.txt -f ABC_ Log.txt /ABC_/ {*}

答案2

Awk解决方案:

awk '/^ABC_/{
         if (fn) close(fn); sub(":", "", $1);
         fn = $1".txt"; next
    }
    { print > fn }' Log.txt

相关内容