doc/ja/man/man1/sort.1
Hiroyuki Hanai 8384f4bcfc Import Japanese Online Manuals.
The Japanese Manual team(man-jp@jp.FreeBSD.ORG) has translated
and keeps maintaining them.
Submitted by: Kazuo Horikawa <horikawa@isrd.hitachi.co.jp>
1998-02-25 04:54:20 +00:00

237 lines
6.9 KiB
Groff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.TH SORT 1 "GNU Text Utilities" "FSF" \" -*- nroff -*-
.\" jpman %Id: sort.1,v 1.2 1997/05/21 00:40:39 mutoh Stab %
.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進で 0400176 (32126, 空白から `~'まで) に含まれない
文字を無視します。
.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 互換性
.PP
.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 が悪いのです。