このマニュアルページは GNU 版 sort について記述したものである。 sort は指定されたファイルの行をソート、マージ、比較する。ファイル名が与えら れなかった場合は標準入力を読み込む。ファイル名 `-' は標準入力を意味す る。デフォルトでは sort は結果を標準出力に書き出す。
sort には 3 種類の動作モードがある。ソート (デフォルトの動作)、マージ、ソー トされているかのチェックである。以下のオプションで動作モードを変更する。
行のペアは以下のように比較される。キーフィールドが指定されている場合は、 sort は順序オプション (ordering option) によってコマンドラインから指定され た順に、それぞれの行からのフィールドを比較する。比較動作は違いを発見す るか全てのフィールドを尽くすまで継続される。
グローバルオプション Mbdfinr のうちのどれかが与えられていて、キーフィールドが指定されなかった場合は、 sort はグローバルオプションの指定の下に、行全体を比較する。
もし全てのキーが等しければ (または順序オプションの指定が全くなければ)、 sort は最終ソート (last-resort) として、マシンで定義されている順序で行を 1 バイトずつ比較する。 最終ソートによる比較はグローバルオプション -r にはそのまま適用される。 -s (stable) オプションはこの最終ソートの比較を行わない。したがって全ての フィールドが等しかった行の間では、入力ファイルの順序が保存される。フィー ルドやグローバルオプションが指定されなかった場合は -s は効果を持たない。
GNU sort には入力ファイルの大きさや行の長さに関する制限はない。さらに入力ファイ ルの最終バイトが改行 (newline) である必要もない。 GNU sort は黙って newline を追加する。
環境変数 TMPDIR が設定されている場合、 sort は一時ファイルの置き場所として、デフォルトの /tmp の代わりにそのディレ クトリを用いる。オプション -T tempdir でも一時ファイルを置くディレクトリを指定できる。オプションは環境変数 より優先される。
以下のオプションは出力行の順序に影響する。これらはグローバルにも、また 特定のキーフィールドのみに対しても指定できる。キーフィールドが指定され ていない場合は、グローバルオプションは行全体の比較に対して適用される。 指定されている場合は、グローバルオプションは、特にオプション指定のない キーフィールドに継承される。
他のオプションは以下の通り:
位置の指定は f.c という書式で行う。 f は用いるフィー ルドの番号、 c は先頭文字の番号で、 +pos の場合はフィール ドの先頭から、-pos の場合は直前のフィールドの最後から数える。 .c の部分は省略でき、その場合はフィールドの先頭の文字となる。 -b オプションが指定された場合の .c の起点は、 +pos ならフィー ルドに最初に現われた空白以外の文字となり、 -pos なら直前のフィー ルド以降に最初に現われた空白以外の文字となる。
+pos や -pos 引き数にはオプション文字 Mbdfinr を付加することができる。この場合、そのフィールドにはグローバルな順序オ プションは適用されなくなる。 -b オプションは +pos 及び -pos の片方にも両方にも指定でき、 グローバルオプションから継承された場合は両方に適用される。 -n または -M オプションが指定された場合には、 -b が暗黙に指定されたとみなされ、 -b がキー指定の +pos と -pos の両方に適用される。キーは複数 のフィールドにまたがっていても構わない。
以上に加えて、 GNU sort が引き数ひとつで起動された場合には、以下のオプションも認識される:
sort の歴史的な (BSD や System V の) 実装では、いくつかのオプションの解釈に 差異があった。典型的なものとしては -b, -f, -n などを挙げることができる。 GNU sort は POSIX で指定されているように動作する。これはだいたい System V (すべてではない!) での動作に似ている。 POSIX によれば、 今後は -n は -b を伴わない。 一貫させるため、 -M も同様に変更されている。これはフィールド指定が明確でない場合には、文字 位置の解釈に影響してしまうかもしれない。これが問題になる場合は、明示的 に -b を加えれば良い。