.\" %FreeBSD: src/gnu/usr.bin/sort/sort.1,v 1.5.8.1 2001/07/22 11:01:34 dd Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man1/sort.1,v 1.2 2001/05/14 01:07:28 horikawa Exp $ .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 解説 このマニュアルページは GNU 版の .B sort について書かれています。 .B sort は、file が指定されていればそのファイルから、ファイルが指定されない か `-' であれば標準入力からデータを読み込み、入力した各行について、 ソートやマージや比較を行います。 .B sort はデフォルトでは標準出力に結果を書き出します。 .PP .B sort は、3 つの動作モードを持っています。 (デフォルトの) ソートと、マージと、ソートされているかどうかのチェックです。 以下のオプションで動作モードを変更します。 .TP .I \-c ファイルが既にソートされたものであるかどうかチェックします。 もし、ソートされてなければ、エラーメッセージを表示すると共に、 戻り値に 1 を返します。 .TP .I \-m 複数のファイルをソートしながらマージします。 個々のファイルは、あらかじめソートしておかなければなりません。 ソートはいつでもマージの代わりに動きます。 マージのオプションがあるのは、単なるマージですむ場合には、 その方がずっと高速だからです。 .PP 入力行は次のようにして比較されます。 キーフィールドが指定されている時には、 .B sort は、違いが見つかるかキーがなくなるまで、 コマンドラインに指定された順にキーを比較します。 .PP もしグローバルオプション .I Mbdfinr のどれかが指定され、キーが指定されなければ、 .B sort はグローバルオプションにしたがって、行全体を比較します。 .PP すべてのキーが等しい時には (または順序を指示するオプションが指定されていない時) 、 .B sort は最後のソートとして、 そのマシンでの文字の照合順 (machine collating sequence) にしたがって、 各行をバイト毎に比較します。 最後のソートでは、 .I \-r オプションが有効です。 .I \-s (stable) オプションは、この最後のソートをやめて、 すべてのキーが等しい行の相対的な出現順を保ちます。 キーフィールドやグローバルオプションを全く指定しない時には .I \-s は効果を持ちません。 .PP GNU .B sort には、入力行の長さの制限 (行に含まれるバイト数の制限) はありません。 また、入力ファイルの最後の 1 バイトが改行文字でない時には、 GNU .B sort は改行文字を補って処理を行います。 .PP 環境変数 .B TMPDIR が設定されていると、 .B sort はそれを作業ファイルを置くディレクトリとして用います。 .I "\-T tempdir" オプションも作業ディレクトリの指定に使えます。 この指定は環境変数よりも優先されます。 何も指定が無い時は /tmp を使います。 .PP 以下に示すオプションによって、出力行の順序を制御できます。 これらはグローバルに指定したり、特定のキーフィールドについて 指定する事もできます。 キーフィールドを指定しない時には、 グローバルオプションは行全体の比較に適用されます。 キーを指定した時には、キー毎に特別に指定がある場合を除き、 グローバルオプションの動作は各キーに継承されます。 .TP .I \-b ソートキーを見つける時、先頭にある空白を無視します。 .TP .I \-d `電話帳順' でソートします。アルファベット、数字、空白以外の文字を無視します。 .TP .I \-f 英大文字と小文字の区別をしません。 .TP .I \-i ASCII コードの8進で 040〜0176 (32〜126, 空白から `~'まで) に含まれない 文字を無視します。 .TP .I \-M 空白を無視した最初の文字列の先頭から 3 文字を、 月の英名の略称とみなして (大文字にした上で) 、 `JAN' < `FEB' < ... < `DEC' の順に大小関係を決めます。 月の名称でない文字列は、JAN (1月) より小さいと見なされます。 .TP .I \-n 文字列を、数とみなして比較します。 数は、空白(option)・\- 記号(option)・数字列・小数点(option)・ 数字列(option)から構成されます。 .TP .I \-r 比較の順番を逆にします。 キーの昇順ではなく降順に出力します。 .PP その他のオプションは以下の通りです。 .TP .I "\-o output-file" 結果を標準出力の代わりに、 .I output-file に出力します。 出力ファイル名が入力ファイルの一つと同じでも、 作業ファイルを作って処理するので問題ありません。 .TP .I "\-t separator" .I separator で指定した文字を、ソートキーを決める時のフィールド区切りとします。 デフォルトでは、空白でない文字と空白文字の間でフィールドを区切ります。 例えば、` foo bar' という行は、` foo' と ` bar' という 2 つの フィールドに分けられます。 .\" 一方、 区切り文字を指定した場合には、その文字はフィールドには含まれません。 .\" 例えば、``,'' を区切り文字とした場合、``foo,,,bar'' という行は、 .\" ``foo'' と 2 つの空文字列と ``bar'' の 4 つのフィールドに分かれます。 .TP .I \-u ソート (デフォルト) およびマージ ( .I \-m オプション) 動作時、同じ内容の行があった場合は、 最初の 1 行だけ出力し、後は出力しないようにします。 ソート済みかのチェック( .I \-c オプション) の場合は、同じ内容の行が連続しない事をチェックします。 .TP .I "+POS1 [\-POS2]" ソートのキーとして使うフィールドを指定します。 POS1 が指定する位置から、POS2 が指定する位置の直前 (POS2 を省略した 場合は最後まで) のフィールドを使います。 フィールドと文字の位置は最初を 0 番目と数えます。 .TP .I "\-k POS1[,POS2]" ソートキーを指定するもう 1 つの書式です。 フィールドと文字の位置は最初を 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 .\" ↓以下のくだりは原文に対応無し -- jpman Sakai .\" (\fI-pos2\fP が \fIf\fP だったら pos2 番目のフィールドの .\" 先頭文字の直前、すなわち pos2-1 番目のフィールドの終りまでが .\" キーになる。 .\" \fI-pos2\fP が \fIf\fP.\fIc\fP だったら pos2 番目のフィールドの .\" \fIc\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 の両方に働きます。 .\" XXX -M or -n implies -b ? キーは複数のフィールドに跨っても構いません。 .PP GNU .B sort がただ一つの引数をつけて起動される時には、以下のオプションが 認識されます。 .TP .I "\-\-help" 標準出力に使い方を表示して正常終了します。 .TP .I "\-\-version" 標準出力にバージョン情報を表示して正常終了します。 .SH 互換性 .B sort の歴史的な実装 (BSD や System V) とはいくつかのオプション、特に .IR \-b , .IR \-f , .IR \-n 、 の解釈が異なります。 GNU sort は、POSIX の動作に従い、普通 (必ずではない) それは System V の動作と似ています。 POSIX によれば、 .I \-n は .I \-b を暗黙に指定しなくなりました。 整合性を取るために、 .I \-M も同じように変更されました。 これによってフィールド中の文字の位置の意味が影響される場合が あるかも知れません。 この問題を避けるには、明示的に .I \-b を指定して下さい。 .SH バグ .I \-k の有り無しによりフィールド番号の意味が異なるのは混乱の元です。 この件についてはすべて POSIX が悪いのです。