SORT(1)

名称
sort - テキストファイルを行でソートする

書式
sort [-cmus] [-t separator] [-o output-file] [-bdfiMnr] [+POS1 [-POS2]] [-k POS1[,POS2]] [file...]

解説
sort は、file が指定されていればそのファイルから、ファイルが指定されない か `-' であれば、標準入力を読み込み、入力した各行を比較して、ソートを行 ない、結果を標準出力に出力します。

本 sort は、GNU バージョンのソートです。大きく次の 3 つのモードに分かれます。 ソート (デフォルト) と、マージと、チェックです。以下のオプションで 動作モードを変更します。

-c  ファイルが既にソートされたものであるかどうかチェックします。 もし、ソートされてなければ、エラーメッセージを表示すると共に、 戻り値に 1 を返します。

-m  複数のファイルの間でソートしながらマージします。個々のファイルは、 あらかじめソートしておかなければなりません。 単純に各ファイルを連結した後ソートするより、個々にソート後、本 オプションでソートしながらマージした方が高速です。

その他に、次のオプションがあります。

-b  各行の比較の際、頭にある空白を無視します。

-d  辞書順でソートします。アルファベット、数字、空白以外の文字を無視します。

-f  英大文字と小文字の区別をしません。

-i  ASCII コードの 32〜126 (空白から `~'まで) に含まれない文字を無視します。

-M  空白を無視した最初の文字列のうち、3 文字を、月の名称の省略とみなして `jan' < `feb' < ... < `dec' の順でソートします。月の名称にない文字列 があった場合は、jan (1月) よりさらに前に出力します。

-n  文字列を、数字とみなして比較します。

-r  比較の順番を逆にします。

-o output-file
    結果を標準出力に出力する代りに、 output-file に出力し ます。出力ファイルが、入力ファイルと同じファイル名の場合でも、 テンポラリファイルを作って処理するので、問題ありません。

-u  ソート (デフォルト) およびマージ ( -m オプション) 動作時、重複する行があった場合は、最初の 1 行だけ出力し、 後は出力しないようにします。ソート済みかのチェック ( -c オプション) の場合は、重複する内容 の行が連続していない事をチェックします。

-t separator
    separator で指定した文字を、フィールドの区切とみなします。

sort は、デフォルトでは各行の先頭から全ての文字を見てソートを行いますが、 次のオプションにより特定のフィールドだけに比較を限定することもできます。なお、 -t オプションで区切文字を指定しない場合は、空白でない文字と 空白文字の間にフィールドの区切りが存在するものとみなします。このため、 例えば、` foo bar' という行は、` foo' と ` bar' という 2 つのフィー ルドとみなされます。これに対し、区切文字を指定した場合、その文字を除い た部分がフィールドとなります。このため、例えば、``,'' を区切文字とした 場合、``foo,,,bar'' という行は、``foo'' と 2 つの空文字列と ``bar'' の 4 つのフィールドに分かれます。

+POS1 [-POS2]
    最初のフィールドを 0 番として順番に数えていき、 POS1 番から、POS2 の前 (POS2を省略した場合は、最後) までに、行の比 較を限定します。 POS1、POS2 には、 フィールド番号の後にピリオドを付けて、フィー ルド内の何文字目から (POS2 なら何文字目まで) を対象とするか指定す ることができます。これも最初の文字を 0 番と数えるため、``+0.1'' なら、最初のフィールドの 2 文字目からが対象になります。

-k POS1[,POS2]
    フィールドの指定のもう 1 つの書式です。 +POS1 [-POS2] とほぼ同じですが、最初のフィールドおよび最初の文字を 1 番として数えます。

戻り値
成功した場合は、0 を、エラーがおきた場合は、0 より大きな 値を返します。ただし、ソート済みかどうかのチェック動作で、ソート されていない場合も 1 を返します。

環境変数

TMPDIR
    テンポラリファイルを作る時の作業ディレクトリを指定します。 デフォルトでは /tmp を使用します。