csplit - テキスト・ファイルを分割する

形式

csplit [–Aaks] [–f prefix] [–n number] file arg arg …

説明

csplit はテキスト・ファイルを入力として取り込み、 その内容をコマンド行の arg 値で与えられた基準に基づいて分割します。 例えば csplit を使ってテキスト・ファイルを 10 行ごとのチャンクに 分割し、各チャンクを別々のファイルとして保管することができます。詳細は、分割の基準を参照してください。ファイル 引数として指定されたとき は、csplit は標準入力 (stdin) を使用します。

csplit が作成したファイルは、通常次の形式の名前です。
xxnumber
ここで number はゼロで始まる 2 桁の 10 進数で csplit が ファイルを作成するたびに 1 ずつ増加します。

csplit はまた、作成するファイルのサイズをバイトで表示します。

オプション

–A
作成されたファイル名の数値の部分に大文字を使用します。作成された名前は 、xxAAxxAB 等の形となります。
–a
作成されたファイル名の数値の部分に小文字を使用します。作成された名前は 、xxaaxxab 等の形となります。
–f prefix
ファイルを名付けるとき、デフォルトの xx の代替に使用する 接頭部の文字を指定します。それによりファイル名が NAME_MAX バイトより長くなる場合はエラーと なり、csplit はファイルを作成せずに終了します。
–k
すべての作成されたファイルをそのままにして終了します。通常は、エラーが起きると csplit は、作成したファイルを除去します。
–n number
作成されたファイル名の数字の部分の桁数を指定します。
–s
ファイル・サイズの表示を抑制します。

分割の基準

csplit は、コマンド行の arg を書かれている順番に処理します。最初の引数がファイルの最初のチャンクを切り離し、次の引数が次のチャンク (つまり残っている最初の行で始まる) を切断し、以下同様に切り離します。 このようにファイルの各チャンクは、残っているファイルの最初の行で始まり、次の arg で指定される行まで行きます。

arg の値は、以下のうちのどれかです。
/regexp/
現在行から正規表現 regexp と一致するストリングの 1 行前の 行までのすべての行を部分のチャンク (大きい塊) としてとります。csplit がこのチャンクをとり出力ファイルに書き込んだあと、現在行を regexp と一致する行に設定します。
/regexp/offset
regexp と一致するストリングを含む最初の行から、与えられた offset の行の 1 行前までのチャンクであること以外、前述の基準と同じです。offset は、正または負の整数です。csplit がこのチャンクをとり出力ファイルに書き込んだあと、現在行を regexp と一致する行に設定します。
注: この現在行は、たったいま書き出されたチャンクの部分でない最初の行です。
%regexp%
csplit が、チャンクを出力ファイルに書き込まないこと 以外、/regexp/ と同じです。それは、単にそのチャンクをスキップします。
%regexp%offset
csplit が、チャンクを出力ファイルに書き込まないこと 以外、/regexp/offset と同じです。
linenumber
現在行で始まり linenumber 番目の行の 1 行前までの チャンクをとります。split は、これを出力ファイルに書き込んだあと、現在行を linenumber に設定します。
{number}
上述の基準を number 回数、繰り返します。正規表現の基準に従う場合は、正規表現の処理を number 回数だけ多く繰り返します。linenumber 基準に従う場合は、csplitlinenumber 行 ごとに、number 回数、ファイルを分割します (現在行から始めて)。例えば、以下のとおりです。
csplit file 10 {10}
は、まず 1 行目から 9 行目までのチャンクをとり、それから 10 行ずつ 109 行目までこれを続けます。

エラーが起きるのは、判断基準がファイルの終わりを超えて行を「グラブ」しよう とした場合、または現在行とファイルの終わりの間に正規表現に一致する行がない 場合、あるいは offset が現在行の前かファイルの終わりの後の位置を 指した場合です。

ローカライズ

csplit は、以下のローカライズ変数を使用します。
  • LANG
  • LC_ALL
  • LC_COLLATE
  • LC_CTYPE
  • LC_MESSAGES
  • LC_SYNTAX
  • NLSPATH

詳しくは、ローカライズを参照してください。

終了値

0
正常終了
1
以下のいずれかによる失敗。
  • csplit が入力ファイルか出力ファイルを開くことができなかった
  • 出力ファイルへの書き込みエラー
2
以下のいずれかによる失敗。
  • 無効なコマンド行オプション
  • prefix の名前が –f の後に無い
  • 桁数の number–n の後に無い
  • 入力ファイル file が指定されなかった
  • arg 値が指定されなかった
  • コマンドがメモリーを使い果たした
  • arg が誤り
  • 予期する前にコマンドがファイルの終わりを検出した
  • arg の正規表現が正しくない
  • arg の行のオフセット/数が正しくない
  • {number} の繰り返しカウントが正しくないか場所が違っている
  • –n を使用して生成されたファイル名が多すぎた
  • 生成されたファイル名が長すぎた

移植性

POSIX.2 ユーザー移植性拡張, X/Open 移植性ガイド, UNIX システム.

–A–a オプションは、POSIX 標準の拡張です。

関連情報

awksed

regexp の詳細については、『正規表現 (regexp)』を参照してください。