csplit コマンド
目的
ファイルを個々のファイルに分割します。
構文
csplit [ -f Prefix ] [ -k ] [ -n Number ] [ -s ] File Argument ...
説明
csplit コマンドは、指定されたファイルをコピーし、コピーをセグメント単位に分割します。 元の入力ファイルはテキスト・ファイルでなければなりません。このファイルはそのまま残ります。
csplit コマンドは、Argument パラメーターの指定回数 (最大 99 回) に応じて、ファイル xx00 . . . xx99 にセグメントを書き込みます。 デフォルトでは、Argument パラメーターに 1 つの行番号が指定されます。複数の行番号を指定した場合は、以下のルールが適用されます。
- ファイル xx00 には、元の入力ファイルの先頭行から、 最初の Argument パラメーターに指定した行番号の 1 つ前の行までが入ります。
- ファイル xx01 には、 最初の Argument パラメーターに指定した番号の行から、 2 番目の Argument に指定した行の 1 つ前の行までが入ります。引数として指定した各行番号には、新しいファイルの先頭を示すマークが付きます。
- xxnn (最後に作成されるファイル) には、最後の Argument パラメーターに指定した番号の行から、ファイルの終わりの行までが入っています。
例えば、元の入力ファイルが 108 行の場合に、以下のコマンドを入力したとします。
csplit orginal.txt 11 72 98csplit コマンドは、xx00 ファイル (1 行目から 10 行目まで)、xx01 ファイル (11 行目から 71 行目まで)、xx02 (72 行目から 97 行目まで)、xx03 (98 行目から 108 行目まで) の 4 つのファイルを作成します。
Argument パラメーターには、以下の記号とパターン文字列も指定できます。
| 項目 | 説明 |
|---|---|
| /Pattern/ | 現在行から、指定されたパターンが含まれている行の 1 つ前の行までのセグメントが入ったファイルを作成します。パターンが入っている行が現在行になります。 |
| %Pattern% | 指定されたパターンが含まれている行を現在行に設定しますが、そのセグメントのファイルは作成しません。 |
| +Number | 直前に指定されているパターンに一致した行から、指定された行数分だけファイルの進みます。例えば、/Page/+5 と指定すると、Page が検索され、Page が検出された行から 5 行分進みます。 |
| -Number | 直前に指定されたパターンに一致した行から、指定された行数分だけファイルの前方に移動します。例えば、/Page/-5 と指定すると、Page が検索され、Page が検出された行から 5 行分さかのぼります。 |
| {Number} | 直前に指定されているオプションを、この引数に指定した回数だけ繰り返します。 この番号の前には、パターンまたは行数を指定することができます。前にパターンが指定されていると、csplit コマンドは指定されている回数だけこのパターンを再使用します。前に行数が指定されていると、csplit コマンドはファイルをそのポイントから指定されている行数分ずつ分割します。 |
スペースなど、シェルにとって特別な意味を持つ文字が含まれているパターンは、すべて引用符で囲みます。 パターンには、組み込み改行文字は使えません。[a-z] などの - (負符号) は、現行の照合シーケンスに従った 範囲 を意味します。照合シーケンスは、文字範囲内で使用する等価クラス を定義できます。
フラグ
| 項目 | 説明 |
|---|---|
| -f Prefix | 作成されたファイル・セグメントに使用する接頭部を指定します。この変数のデフォルト値は xx です。 |
| -k | エラーが発生した場合、作成されたファイル・セグメントを一切変更せずに残します。 |
| -n Number | 作成されたファイルの名前に使用する 10 進数の桁数を変更します。 デフォルトは 2 桁で、ファイル名は xx00 .. . xx99 となります。例えば、-n 4 フラグを指定すると、新しいファイル名は xx0000 .. . xx0099 となります。 |
| -s | 文字カウントの表示を抑制します。 |
終了状況
このコマンドは次の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 正常終了。 |
| >0 | エラーが発生しました。 |
例
- book のテキストを章ごとに別々のファイルに分割するには、以下のように入力します。
上記のコマンドにより、xx00 から xx09 までの 10 個のファイルが作成されます。xx00 ファイルには、第 1 章の前に掲載されている前付けの部分が入ります。ファイル xx01 から xx09 には、各章の内容が入ります。各章は、Chapter という単語と章番号だけが記述されている行で始まります。csplit book "/^ Chapter *[k.0-9]k./" {9} - book から作成した各ファイルのファイル名の先頭に chap を付けるように指定するには、以下のように入力します。csplit -f chap book "/^ Chapter *[k.0-9]k./" {9}上記のコマンドにより、book はファイル chap00 から chap09 に分割されます。
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/csplit | csplit コマンドが入っています。 |