パターンに応じてファイルを複数のファイルに分割 [重複]

パターンに応じてファイルを複数のファイルに分割 [重複]

数百行の長さの大きなファイルがあります。ファイルは、「ABC」などの特定の識別子に従ってセクションに区切られます。この「ABC」行は6回表示されるため、6つの出力ファイルが必要です。私はSplitとawkに精通していますが、私が説明したタスクを実行するためのコマンドラインを作成できないようです。どんなアイデアがありますか?

これは例です

ABC
line 1
line 2
line 3
ABC
line 1
line 2
ABC
line1

ABCが新しいファイルの最初の行であり、次のABCが見つかる前に終わる3つのファイルが必要です。

ベストアンサー1

使用csplit

csplit -z somefile /ABC/ '{*}'

デフォルトでは、出力ファイルはxx00、、、xx01...ですが、必要に応じてフォーマットと番号付けを変更できます。参考man csplit

おすすめ記事