特定のヘッダーの下の行をコピーし、元のlog.txtから新しいテキストファイルを生成するスクリプト

特定のヘッダーの下の行をコピーし、元のlog.txtから新しいテキストファイルを生成するスクリプト

20,000行を含む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

ABC_1.TXT単一のlog.txtファイルから99個の個別のテキストファイルを提供でき、名前をset name、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

関連情報