Solaris man マニュアル
ユーザーコマンド                                          sort(1)

【名前】
     sort - テキストファイルのソート、マージ、順序の確認

【形式】
     /usr/bin/sort  [-bcdfimMnru]  [-k keydef]   [-o output]   [-
     S kmem]  [-t char] [-T directory] [ -y  [kmem]] [-z recsz] [
     +pos1  [-pos2]] [file ...]

     /usr/xpg4/bin/sort [-bcdfimMnru] [-k keydef] [-o output]  [-
     S kmem]  [-t char] [-T directory] [ -y  [kmem]] [-z recsz] [
     +pos1  [-pos2]] [file ...]

【機能説明】
     sort コマンドは、指定されたファイルのすべての行をソート し、
     その結果を標準出力に書き込みます。

     比較は、各入力行から抽出された 1 つまたは複数のソートキー に
     基づいて行われます。デフォルトでは、1 つのソートキー、つまり
     入力行全体が使用されます。また、ソートの順は、現在のロケール
     の照合順序に従います。

【オプション】
     次にあげるオプションは、デフォルトの動作を変更します。

  [/usr/bin/sort]
     -c              引数で指定された入力ファイルが、現在のロケー
                     ルの照合順序に従ってソートされていることを確
                     認します。終了ステータスが設定されますが、正
                     しくソートされていれば何も出力されません。



  [/usr/xpg4/bin/sort]
     -c              どんな場合でも何も出力されない、という点を除
                     き /usr/bin/sort と同じです。



     -m              マージのみを行います。入力ファイルはソート済
                     みであるものとします。



     -o output       標準出力の代わりに使用される出力ファイル名を
                     指 定 します。このファイルは入力ファイルの 1
                     つと同じでも構いません。



     -S kmem         ソートを行うために使用するスワップメモリー容
                     量 の最大値を指定します (デフォルトの単位は
                     キロバイト)。kmem には、バイト (b)、キロバイ
                     ト (k)、メガバイト (m)、ギガバイト (g)、テラ
                     バイト (t)、の数値を直接指定したり、イ ン ス
                     トールされている物理メモリーに対する割合パー
                     セント (%) で指定することができます。



     -T directory    directory 引数は、一時ファイルを入れるディレ
                     クトリ名です。



     -u              同一行を削除します。同じキーを持つ行の組から
                     1  行のみを取り出し、他を抑制します。-c オプ
                     ションと同時に指定すると、入力ファイルがソー
                     ト済みであることと、同じキーを持つ複数の行が
                     存在しないことの両方を確認します。



     -y kmem         (旧式オプション) sort が最初に使用する主記憶
                     量を指定するために使用されていました。このオ
                     プションは、仮想メモリーシステムには適してい
                     ません。sort が使用するメモリー容量は、-S オ
                     プションで指定するようになりました。



     -z recsz        (旧式オプション) システム固有のデ フォ ル ト
                     バッファサイズを超えるような行が存在した場合
                     でも、異常終了を起こさないようにするためのオ
                     プションでした。現在では、最長の行が書き込め
                     る大きさのバッファを sort が自動的に割り当て
                     る の で、このオプションは意味がなくなりまし
                     た。



  [並べ換えオプション]
     デフォルトのソートの並び換え順は、LC_COLLATE の値に依存し ま
     す。 LC_COLLATE  が C に設定された場合、ASCII の並べ換え順で
     ソートされます。LC_COLLATE が en_US に設定された場合、ある 2
     つの文字列のうち、一方が他方よりも先に大文字を使用していてそ
     の他の点では一様である場合は大文字・小文字を区別しますが、そ
     れ以外は大文字・小文字を区別しません。その他のロケールでは、
     別の並べ換え順でソートされます。

     次にあげるオプションは、デフォルトの並べ換え規則を変更 し ま
     す。ソートキーフィールド指定とは無関係に並べ換えオプションが
     ある場合、要求された並べ換え規則は、すべてのソートキーに適用
     されます。指定された並べ換えオプションが特定のソートキーに付
     いている場合 (「ソートキーオプション」の説明を参照)、この オ
     プ ショ ンはそのキーに対するすべてのグローバルな並べ換えオプ
     ションを無効にします。旧式のキーオプションでは、+pos1  オ プ
     ショ ンのあとに以下のオプションを 1 つ以上指定すると、その直
     前のオプションで指定されたキーフィールドに対してだけ有効にな
     ります。

     -d              辞書編集順にします。比較では、英字、数字およ
                     び空白 (空白文字およびタブ) だけが有効です。



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



     -i              非印字文字を無視します。



     -M              月名とみなして比較します。フィールドの先頭 3
                     文字 (空白文字以外) は大文字に変換し、比較し
                     ます。たとえば、英語ではソートの並び換え順は
                     JAN < FEB < ... < DEC です。月名でないフィー
                     ルドは、JAN よりも低く見なされます。-M オ プ
                     ショ ンは -b オプションの動作を含みます(下記
                     を参照)。



     -n              ソートキーを、省略可能な空白文字、省略可能な
                     マイナス符号、省略可能な小数点および桁区切り
                     文字 (現在のロケールに定義されているもの) を
                     持 つ 0 個以上の数値からなる最初の数値列に限
                     定します。キーの値は算術的な数値としてソート
                     されます。空の数値列は、ゼロとみなされます。
                     先行するゼロおよびゼロに付けられた符号は、並
                     べ換えに影響を与えません。



     -r              比較の意味を反転します。



  [フィールド区切り文字オプション]
     フィールド区切り文字オプションの扱い方は、以下のオプションを
     使って変更できます。

     -b              限定ソートキーの開始および終了位置の決 定 時
                     に、先行する空白文字を無視します。最初のソー
                     トキーオプションの前に -b オプションが指定さ
                     れている場合、このオプションはすべてのソート
                     キーオプションに適用されます。それ以外の場合
                     は、 オ プ ショ ン 引 数 の -kfield_start 、
                     field_end 、+pos1 、-pos2 の各々に -b  オ プ
                     ションを個別に指定します (下記を参照) 。



     -t char         char をフィールド区切り文字として使 用 し ま
                     す。char は、(ソートキーに含まれることがあっ
                     ても) フィールドの一部とは見なされま せ ん。
                     char  は、繰り返し出てきてもそれぞれが有効で
                     す (たとえば、<char><char> は空フィールド を
                     区 切ります) 。-t を省略すると、デフォルトの
                     フィールド区切り文字として空白文字が用いられ
                     ます。空白でない文字に続く、最大長の空白文字
                     列が、フィールド区切り文字となります。



  [ソートキーオプション]
     ソートキーは以下のオプションを使って指定できます。

     -kkeydef        keydef 引数の形式は次のとおりです。


                     -k field_start [type] [,field_end [type] ]




                             個々の引数の意味を以下に説明します。

                             field_start と field_end

                                 行の一部分に限定したキーフィール
                                 ドを定義します。




                             type

                                 文字群 bdfiMnr から得られる修 飾
                                 子です。b 修飾子は -b オプション
                                 と同じ働きですが、対 象 と し た
                                 field_start  または field_end だ
                                 けに適用されます。フィールド内の
                                 文字は、フィールド内の最初の空白
                                 でない文字から数えられま す。 な
                                 お、 こ れ は first_character と
                                 last_character に個別に適用さ れ
                                 ます。その他の修飾子も、同じ文字
                                 で示すオプションと同じ働き で す
                                 が、対象としたキーフィールドにの
                                 み適用されます。このように動作す
                                 る の は、 field_start  ま た は
                                 field_end のどちらか一方、あるい
                                 は両方が指定されているときです。
                                 field_start と field_end のい ず
                                 れ か に修飾子が付けられていると
                                 き、それらはオプションの対象とは
                                 なりません。



                             複数のキーフィールドがある場合、後に
                             あるキーは、それ以前のキーが等しいと
                             比較された場合にだけ比較されます。-u
                             オプションが指定された場合を除き、等
                             しいと比較された行は、-d 、-f  、 -i
                             、-n 、-k のいずれもが省略された場合
                             と同じように並べ換えられます (-r  オ
                             プションは、指定されていれば有効) 。
                             また行の中の全バイトを用いて比較され
                             ます。


                             次の表記を見てください。


                             -k
                             field_start[type][,field_end[type]]




                             こ れ は  field_start  で 始  ま  り
                             field_end で終わるキーフィールドを定
                             義するものです。ただ し  field_start
                             が 行の限界を超えていたり、field_end
                             のあとに位置している場合に は、 キー
                             フィー ルドは空となります。field_end
                             指定を省略すると、行の終わりと見なさ
                             れます。



                             フィールドは、区切り文字でない最長の
                             文 字列で、-t オプションが指定されて
                             いなければ先行するフィールド区切り文
                             字も含みます。


                             keydef オプション引数の  field_start
                             部分の形式は次のとおりです。


                             field_number[.first_character]




                             フィールド、およびフィールド内の文字
                             に は、 1 から始まる番号が付けられま
                             す。field_number と  first_character
                             指定は、いずれも正の 10 進整数と解釈
                             され、ソートキーの部分として用いられ
                             る 先 頭 の 文 字 を 指 定 し ます。
                             .first_character 指定を省略する と、
                             フィールドの先頭文字が使用されます。



                             keydef オプション引数の field_end 部
                             分の形式は次のとおりです。


                             field_number[.last_character]




                             このうち field_number の意味は上記の
                             field_start  の も の と 同 じです。
                             last_character 指定は、負でな い  10
                             進整数と解釈され、ソートキーの部分と
                             して用いられる最後の文字を指定 し ま
                             す。 last_character の値の評価結果が
                             ゼロのとき、また は  .last_character
                             指定が省略されたときは、field_number
                             が示すフィールドの最終文字が使用され
                             ます。



                             -b オプションまたは b 修飾子が有効な
                             とき、フィールド中の文字はそのフィー
                             ルドの最初の空白でない文字から数えら
                             れ ま す。 これは first_character と
                             last_character に別々に適用 さ れ ま
                             す。


     [+pos1 [-pos2]] -kkeydef オプションと同等な機能を提供する 旧
                     式のオプションです。

                     pos1 および pos2 はそれぞれ m.n という形式を
                     と り、オプションでフラグ bdfiMnr の中から 1
                     つまたは複数のフラグを後に付けることができま
                     す。 +m.n  によって指定される開始位置は、m+1
                     番目のフィールドにある n+1 番目の文字であ る
                     と 解釈されます。.n がない場合は、m+1 番目の
                     フィールドの先頭文字を指す .0 を意味します。
                     b フラグが有効な場合、m+1 番目のフィールドの
                     最初の空白文字以外の文字から n が数えられ ま
                     す。 +m.0b は m+1 番目のフィールド内の最初の
                     空白文字以外の文字を指します。

                     -m.n によって指定される最終位置は、m 番目 の
                     フィー ルドの最後の文字から後へ n 番目の文字
                     (区切り文字も含む) を意味するように解釈さ れ
                     ま す。.n がない場合、m 番目のフィールドの最
                     後の文字を指す .0 を意味します。b フラグが有
                     効な場合、m+1 番目のフィールドの前についてい
                     る最後の空白文字から n が数えられます。し た
                     がって、-m.1b は、m+1 番目のフィールド内の最
                     初の空白文字以外の文字を指します。

                     次の指定を見てください。


                     +w.xT -y.zU


                     これは +pos1 -pos2 の形式をタイプ修飾子 T と
                     U とともに指定したもので、以下の記述と同等で
                     す。


                     undefined            (z==0 & U b を含む & -t が存在する)
                     -k w+1.x+1T,y.0U     (z==0 でその他の場合)
                     -k w+1.x+1T,y+1.zU   (z > 0)

                     ソートキー(-k オプションおよび旧式 の  +pos1
                     と  -pos2) は少なくとも 9 個記述できます。複
                     数個ある場合、コマンド行での順序が意味を持ち
                     ま す。ソートキーを 1 つも指定しないと、行全
                     体のデフォルトのソートキーが使用されます。



【オペランド】
     以下のオペランドを指定できます。

     file            ソート、マージ、または確認するファイルのパス
                     名。 このオペランドを 1 つも指定しない場合、
                     または - を指定した場合には、標準入力が用 い
                     られます。



【使用法】
     ファイルが 2 ギガバイト (2**31 バイト) 以上ある場合 の  sort
     の動作については、largefile(5) を参照してください。

【使用例】
     以下の例では、sort キーを指定する方法のうち旧式のものと旧 式
     でないものの両方を示します。これにより両形式の関係が理解しや
     すくなるはずです。

     例 1: 第 2 フィールドをキーにしてソートする

     第 2 フィールドをソートキーとして用いて、infile の内容をソー
     トします。

     example% sort -k 2,2 infile
     example% sort +1 -2 infile

     例 2: 逆の順序でソートする

     第 2 フィールドの 2 番目の文字をソートキーとして、infile1 お
     よ び infile2 の内容を逆の順序でソートし、outfile に出力しま
     す。なお第 2 フィールドの先頭文字はフィールド区切り文字で あ
     ると想定しています。

     example% sort -r -o outfile -k 2.2,2.2 infile1 infile2
     example% sort -r -o outfile +1.1 -1.2 infile1 infile2

     例 3: ファイル中の特定の 1 文字をキーとしてソートする

     第 2 フィールドの 2 番目の空白でない文字をソートキーとして、
     infile1 と infile2 の内容をソートします。

     example% sort -k 2.2b,2.2b infile1 infile2
     example% sort +1.1b -1.2b infile1 infile2

     例 4: ユーザーID でソートする

     ユーザーID (コロンで区切った 3 番目のフィールド) でソート さ
     れたパスワードファイル passwd(4)  を出力します。

     example% sort -t : -k 3,3n /etc/passwd
     example% sort -t : +2 -3n /etc/passwd

     例 5: フィールドが重複する行を除外してソートされた行を出力す
     る

     ソート済みファイル infile の行の出力にお い て、 同 じ 第  3
     フィールドを持つ行のうち、最初に現われる行だけを出力します。

     example% sort -um -k 3.1,3.0 infile
     example% sort -um +2.0 -3.0 infile

     例 6: ホスト IP アドレスでソートする

     次のコマンドは、どちらも数値形式の IP アドレス (先頭か ら  4
     番 目 までの数値フィールド) でソートされた hosts(4) ファイル
     (IPv4 ホストデータベース) を出力します。

     example$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
     example$ sort -t . +0 -1n +1 -2n +2 -3n +3 -4n /etc/hosts

     '.' は、フィールドの区切り文字であると同時に、多くのロケール
     で  10  進 数 の区切り文字として使用されています。そのため、
     フィールドの末尾の指定に失敗すると、2 つめのフィールド が  1
     つめのフィールドの小数部として認識されてしまうといった問題が
     発生します。

【環境】
     sort の実行に影響を与える環境変数 LC_CTYPE 、LC_MESSAGES  、
     NLSPATH についての詳細は、environ(5) を参照してください。

     LC_CTYPE        テキストデータのバイト列を文字 (たとえば、引
                     数や入力ファイル中のシングルバイト文字や複数
                     バイト文字) として解釈するロケールや、-b  、
                     -d 、-f 、-i 、-n の各オプション用に、文字分
                     類の方法を指定するロケールを定義します。



     LC_NUMERIC      -n オプション用に、小数点や桁区切り文字を 指
                     定するロケールを定義します。



【終了ステータス】
     以下の終了ステータスが返されます。

     0               入力ファイルはすべて正常に出力された、または
                     -c  が指定され入力ファイルは正しくソートされ
                     ていた



     1               -c オプションが指定され入力ファイルは指定 ど
                     お り にソートされていなかった、または -c と
                     -u の両オプションが指定され 2 つの入力 行 の
                     キーが等しかった



     >1              エラーが発生した



【ファイル】
     /var/tmp/stm???


【属性】
     次の属性については attributes(5) のマニュアルページを参照 し
     てください。

  [/usr/bin/sort]
     ____________________________________________________________
    |         属性タイプ          |            属性値           |
    |_____________________________|_____________________________|
    | 使用条件                    | SUNWesu                     |
    |_____________________________|_____________________________|
    | CSI                         | 対応済み                    |
    |_____________________________|_____________________________|

  [/usr/xpg4/bin/sort]
     ____________________________________________________________
    |         属性タイプ          |            属性値           |
    |_____________________________|_____________________________|
    | 使用条件                    | SUNWxcu4                    |
    |_____________________________|_____________________________|
    | CSI                         | 対応済み                    |
    |_____________________________|_____________________________|

【関連項目】
     comm(1), join(1),  uniq(1),  nl_langinfo(3C),  strftime(3C),
     hosts(4),   passwd(4),   attributes(5),  environ(5),  large-
     file(5), XPG4(5)

【診断】
     さまざまなトラブル (たとえば、入力行が長すぎる) が発生した場
     合 や  -c オプションにおいてソート済みでないことを発見した場
     合、コメントを出力し、0 以外の終了ステータスで終了します。

【注意事項】
     入力ファイルの最終行に復帰改行文字 (NEWLINE) がな い 場 合、
     sort  はこれを追加し、警告メッセージを出力し、処理を継続しま
     す。

     sort で、等しいキーを持つ行の相対的な順序が保存されるとい う
     保証はありません。

     -S オプションを使用して、特定の用途に sort の動作を調整す る
     こ とができます。ただし、sort は仮想メモリーシステムよりも、
     ソート時により適切に膨大な量のメモリーを利用できることに注意
     し てください。このため、-S を使用して、膨大なメモリーを利用
     するようにしてソートを実行すると、パフォーマンスがかなり低く
     なることもあります。

     前述のように、フィールド修飾子の一部 (-M や -d など) は、 入
     力データをロケール固有の設定と照合して解釈します。ロケール固
     有の設定を考慮に入れていないと、解釈の結果が予期しないものに
     なることがあります。たとえば月の名前をキーにする場合、「一般
     に通用する」省略名を使用しても、sort コマンドはそれを正し い
     名 前に読み換えることはしません。sort コマンドが認識する省略
     名は、nl_langinfo(3C) または strftime(3C) で定義されているも
     のだけです。表示可能順や辞書編集順でソートする場合、このよう
     な定義がロケールで適切に設定されていないと、空のソートキーが
     返されることがあります。結果として、次のキーが適切な並べ替え
     を決定する有効なキーになります。