.\" This file documents the GNU text utilities. .\" .\" Copyright (C) 1994, 95, 96 Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of .\" this manual under the conditions for verbatim copying, provided that .\" the entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Permission is granted to copy and distribute translations of this .\" manual into another language, under the above conditions for modified .\" versions, except that this permission notice may be stated in a .\" translation approved by the Foundation. .\" .\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. .\" Translated Mon Mar 9 1998 by NAKANO Takeo .\" .TH SORT 1 "GNU Text Utilities" "FSF" \" -*- nroff -*- .SH 名前 sort \- テキストファイルの行をソートする .SH 書式 .B sort [\-cmus] [\-t separator] [\-o output-file] [\-T tempdir] [\-bdfiMnr] [+POS1 [\-POS2]] [\-k POS1[,POS2]] [file...] .br .B sort {\-\-help,\-\-version} .SH 説明 この文書はもうメンテナンスされていないので、不正確・不完全 な可能性がある。現在は texinfo 文書が正式な情報となっている。 .PP このマニュアルページは GNU 版 .B sort について記述したものである。 .B sort は指定されたファイルの行をソート、マージ、比較する。ファイル名が与えら れなかった場合は標準入力を読み込む。ファイル名 `-' は標準入力を意味す る。デフォルトでは .B sort は結果を標準出力に書き出す。 .PP .B sort には 3 種類の動作モードがある。ソート (デフォルトの動作)、マージ、ソー トされているかのチェックである。以下のオプションで動作モードを変更する。 .TP .I \-c 与えられたファイルがすでにソートされているかどうかをチェックする。ソー トされていないものがあった場合は、エラーメッセージを表示して戻り値に 1 を返す。 .TP .I \-m 与えられたファイル群をまとめてソートしてマージする。入力ファイルは事前 にそれぞれソートされていなければならない。マージ動作ではなく、ソート動 作を複数ファイルにまとめて行うことも可能である。マージ動作が提供されて いるのは、こちらの方が高速だからである。 .PP 行のペアは以下のように比較される。キーフィールドが指定されている場合は、 .B sort は順序オプション (ordering option) によってコマンドラインから指定され た順に、それぞれの行からのフィールドを比較する。比較動作は違いを発見す るか全てのフィールドを尽くすまで継続される。 .PP グローバルオプション .I Mbdfinr のうちのどれかが与えられていて、キーフィールドが指定されなかった場合は、 .B sort はグローバルオプションの指定の下に、行全体を比較する。 .PP もし全てのキーが等しければ (または順序オプションの指定が全くなければ)、 .B sort は最終ソート (last-resort) として、マシンで定義されている順序で行を 1 バイトずつ比較する。 .\"?? machine collating sequence とは? 最終ソートによる比較はグローバルオプション .I \-r にはそのまま適用される。 .\"??? ここは? .I \-s (stable) オプションはこの最終ソートの比較を行わない。したがって全ての フィールドが等しかった行の間では、入力ファイルの順序が保存される。フィー ルドやグローバルオプションが指定されなかった場合は .I \-s は効果を持たない。 .PP GNU .B sort には入力ファイルの大きさや行の長さに関する制限はない。さらに入力ファイ ルの最終バイトが改行 (newline) である必要もない。 GNU .B sort は黙って newline を追加する。 .PP 環境変数 .B TMPDIR が設定されている場合、 .B sort は一時ファイルの置き場所として、デフォルトの /tmp の代わりにそのディレ クトリを用いる。オプション .I "\-T tempdir" でも一時ファイルを置くディレクトリを指定できる。オプションは環境変数 より優先される。 .PP 以下のオプションは出力行の順序に影響する。これらはグローバルにも、また 特定のキーフィールドのみに対しても指定できる。キーフィールドが指定され ていない場合は、グローバルオプションは行全体の比較に対して適用される。 指定されている場合は、グローバルオプションは、特にオプション指定のない キーフィールドに継承される。 .\"?? もうちょっとうまい言い方はないかなあ... .TP .I \-b 各行の比較の際に、行頭の空白を無視する。 .TP .I \-d 「電話帳」順でソートする。アルファベット、数字、空白以外のキャラクタを すべて無視する。 .TP .I \-f ソートの際に、小文字を対応する大文字と同じに扱う。例えば `b' は `B' と 同じにソートされる。 .TP .I \-i ASCII コードの範囲である 040 以上 0176 以下 (8 進数) に含まれない文字 を無視する。 .TP .I \-M 行頭の空白文字をすべて無視して、最初に現われた 3 文字を、月の名称の省 略形とみなして、 `JAN' < `FEB' < ... < `DEC' の順でソートする。小文字 は大文字と同じに扱われる。月の名称にない文字列は、より低位であるとみな される。 .TP .I \-n 先頭の文字列 (空白が前置されていても良い) を数値文字列として比較す る。数値文字列は、先頭の \- 符号 (なくても良い)、 0 桁以上の数字、 そして小数点と 0 桁以上の数字 (なくても良い) からなる。 .TP .I \-r 比較の結果を逆順にする。より大きなキー値を持つ行が、より早く現われるよ うになる。 .PP 他のオプションは以下の通り: .TP .I "\-o output-file" 出力先を標準出力から .I output-file に変更する。 .I output-file が入力ファイルのどれかひとつだった場合、 .B sort はその入力ファイルを一時ファイルにコピーしてからソートと .I output-file への出力を行う。 .TP .I "\-t separator" 各行からソートキーを検索する際、文字 .I separator をフィールドのセパレーターにする。デフォルトでは、フィールドは空白以外 の文字と空白文字の間の空文字列 (empty string) によって分離される。例え ば入力行として ` foo bar' が与えられた場合、 .B sort はこの行をフィールド ` foo' と ` bar' に分離する。フィールドセパレーター は、その前後のフィールドには含まれないものとされる。 .TP .I \-u デフォルトの動作、または .I \-m オプションの動作では、等しいとされた行のうちの最初のものだけを表示する。 .I \-c オプションの動作では、連続した行で等しいものがないかどうかをチェックす る。 .\"?? -c の方は自信無し... .TP .I "+POS1 [\-POS2]" 各行でソートキーとして用いるフィールドを指定する。 POS1 から POS2 の直前の部分 (POS2 が与えられなかった場合は行末まで) がフィールド となる。フィールドと文字位置は 0 から始まる。 .TP .I "\-k POS1[,POS2]" ソートキーを指定する別法。フィールドと文字位置は 1 から始まる。 .PP 位置の指定は \fIf\fP.\fIc\fP という書式で行う。 \fIf\fP は用いるフィー ルドの番号、 \fIc\fP は先頭文字の番号で、 \fI+pos\fP の場合はフィール ドの先頭から、\fI\-pos\fP の場合は直前のフィールドの最後から数える。 .\fIc\fP の部分は省略でき、その場合はフィールドの先頭の文字となる。 .I \-b オプションが指定された場合の .\fIc\fP の起点は、 \fI+pos\fP ならフィー ルドに最初に現われた空白以外の文字となり、 \fI\-pos\fP なら直前のフィー ルド以降に最初に現われた空白以外の文字となる。 .PP \fI+pos\fP や \fI\-pos\fP 引き数にはオプション文字 .I Mbdfinr を付加することができる。この場合、そのフィールドにはグローバルな順序オ プションは適用されなくなる。 .I \-b オプションは \fI+pos\fP 及び \fI\-pos\fP の片方にも両方にも指定でき、 グローバルオプションから継承された場合は両方に適用される。 .I \-n または .I \-M オプションが指定された場合には、 .I \-b が暗黙に指定されたとみなされ、 .I \-b がキー指定の \fI+pos\fP と \fI\-pos\fP の両方に適用される。キーは複数 のフィールドにまたがっていても構わない。 .PP 以上に加えて、 GNU .B sort が引き数ひとつで起動された場合には、以下のオプションも認識される: .TP .I "\-\-help" 使い方に関するメッセージを標準出力に表示し、実行成功を返して終了する。 .TP .I "\-\-version" バージョン情報を標準出力に表示して終了する。 .SH 移植性 .PP .B sort の歴史的な (BSD や System V の) 実装では、いくつかのオプションの解釈に 差異があった。典型的なものとしては .IR \-b , .IR \-f , .I \-n などを挙げることができる。 GNU sort は POSIX で指定されているように動作する。これはだいたい System V (すべてではない!) での動作に似ている。 POSIX によれば、 今後は .I \-n は .I \-b を伴わない。 一貫させるため、 .I \-M も同様に変更されている。これはフィールド指定が明確でない場合には、文字 位置の解釈に影響してしまうかもしれない。これが問題になる場合は、明示的 に .I \-b を加えれば良い。 .SH バグ .I \-k が使われるかどうかによってフィールド番号の意味が異なってしまうのは混乱 のもとである。これは POSIX が悪いんだよ!