csplit - 指定した文脈に従ってファイルを分割
csplit [-ks] [-f prefix] [-n number] file arg1... argn
csplit ユーティリティーは、file オペランドが示すファイルを読み込み、その内容のすべてまたは一部を arg オペランドの指示に従って他のいくつかのファイルに書き出し、その出力ファイルのサイズを表示します。
サポートしているオプションは、次のとおりです。
生成されるファイルを、順番に prefix00、prefix01、 . . . 、prefixn と名付けます。デフォルトは xx00 ... xxn です。prefix 引数が長すぎて、生成されるファイル名の長さが 14 バイトを超えてしまう場合はエラーとなります。その場合、ファイルは 1 つも生成されず、csplit は診断メッセージを伴って終了します。
作成済みのファイルをそのままにしておきます。エラー発生時、デフォルトでは csplit は作成したファイルを削除します。
生成するファイル名の可変部分の桁数を number で指定します。デフォルト値は 2 です。
生成するファイルのサイズに関する情報を出力しません。
次のオペランドがサポートされています。
分割対象ファイルのパス名。- を指定すると標準入力とみなされます。
オペランド arg1 ... argn は、以下の組み合わせで指定できます。
現在の行から、rexp で示す正規表現の評価 (offset 指定があればそれも考慮) により得られる行の直前の行までを 内容とするファイルを生成します。rexp は、基本正規表現の規則に従っていなければなりません。正規表現には '\/' や '\%' を使用できます。バックスラッシュ (\) はシェルにとって特別な意味を持つため、このような形式は単一引用符で適切に引用する必要がありますoffset は行数を表す正または負の整数で、指定は任意です。指定するときは、符号 + または – を先頭に付加しなければなりません。なお、この指定に従って行を選択したとき、生成されるファイルの行数がゼロになってしまう、あるいは 入力ファイル中の行数を超えてしまう場合、結果は不確定です。ファイル生成後、現在の行は、正規表現の評価により得られた行に設定されます。rexp のパターンマッチングは、常に現在の行から ファイルの終わりまでが対象となります。
このオペランドは、前述の /rexp/[offset] 指定と同じ意味ですが、入力ファイルから選択した行によるファイルの 生成は行われません。
現在の行から、行番号 line_no で示す行の直前の行までを内容とするファイルを生成します。生成したファイル中では、各行に 1 から始まる番号が振られます。現在の行は line_no で示す行に移ります。
直前のオペランドを繰り返します。この指定は、前述のどのオペランド の後でも指定できます。rexp のタイプのオペランドの後に指定すれば、そのオペランドは num 回繰り返されます。line_no オペランドの後に指定すれば、ファイルはその位置から line_no 行ごとに num 回だけ分割されます。
オペランドが示す行が、現在の位置からファイルの終わりまでの 間に存在していない場合、エラーが報告されます。
ファイルが 2 ギガバイト ( 231 バイト) 以上ある場合の csplit の動作については、largefile(5) を参照してください。
次の例は、4つのファイル cobol00 . . . cobol03 を作成します。
example% csplit -f cobol filename \ '/procedure division/' /par5./ /par16./
分割されたファイルを編集した後、次のようにすると、再度 1 つにまとめることができます。
example% cat cobol0[0−3] > filename
この例は、元のファイルを上書きします。
使用例 2 ファイルを等分に分割する次の例では、100 行毎に 10,000 行までファイルを分割します。–k オプションは 10,000 行未満しかなくても、作成されたファイルを保存します。ただし、エラーメッセージはそのまま出力されます。
example% csplit -k filename 100 {99}使用例 3 各 C ルーチンごとにファイルを作成する
prog.c が通常の C のコード化規則 (ルーチンの最後の行の1文字目が } だけである) に従っていれば、この例では、prog.c 中の C ルーチン (21個まで) に対し、それぞれファイルを作成します。
example% csplit -k prog.c '%main(%' '/^}/+1' {20}
csplit の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の終了ステータスが返されます。
正常終了。
エラーが発生した。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
sed(1), split(1), attributes(5), environ(5), largefile(5), standards(5)
診断メッセージは、次に示すもの以外は、メッセージテキストを 読めば意味がわかるようになっています。
指定された引数が、現在の位置とファイルの終わりまでの間に存在する行を指してしないことを意味します。