3-3-08-2 sort ログ、設定の調べ方 Linux

確認したバージョン

$sort --version
sort (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.

sort コマンドは、並べ替えをします。

$cat tmp01 
9
7
ab
1
b
2
5
a
5
0
7
01
6
00
14

オプション指定のない場合、文字として扱い、昇順に並び替える。

$sort tmp01 
0
00
01
1
14
2
5
5
6
7
7
9
a
ab
b

逆順にする。( r オプション)

$sort -r tmp01 
b
ab
a
9
7
7
6
5
5
2
14
1
01
00
0

$cat tmp02
江戸川 乱歩:えどがわ らんぽ:人間椅子
江戸川 乱歩:えどがわ らんぽ:蜘蛛男
泡坂 妻夫:あわさか つまお:しあわせの書
泡坂 妻夫:あわさか つまお:蔭桔梗
香山 滋:かやま しげる:海鰻荘奇談
香山 滋:かやま しげる:オラン・ペンデクの復讐
江戸川 乱歩:えどがわ らんぽ:人間豹
香山 滋:かやま しげる:ゴジラ
横溝 正史:よこみぞ せいし:獄門島
横溝 正史:よこみぞ せいし:本陣殺人事件
泡坂 妻夫:あわさか つまお:11枚のとらんぷ
江戸川 乱歩:えどがわ らんぽ:火星の運河
香山 滋:かやま しげる:月ぞ悪魔
横溝 正史:よこみぞ せいし:羽子板娘
泡坂 妻夫:あわさか つまお:亜愛一郎の冒険
横溝 正史:よこみぞ せいし:怖ろしき四月馬鹿

区切り文字の変更( t オプション)、並べ替えに使用する項目の指定( k オプション)
区切り文字を「:」として、2つめの項目(例では、ひらがな)で並べ替える。

$sort -t: -k2 tmp02
泡坂 妻夫:あわさか つまお:11枚のとらんぷ
泡坂 妻夫:あわさか つまお:しあわせの書
泡坂 妻夫:あわさか つまお:亜愛一郎の冒険
泡坂 妻夫:あわさか つまお:蔭桔梗
江戸川 乱歩:えどがわ らんぽ:火星の運河
江戸川 乱歩:えどがわ らんぽ:人間椅子
江戸川 乱歩:えどがわ らんぽ:人間豹
江戸川 乱歩:えどがわ らんぽ:蜘蛛男
香山 滋:かやま しげる:オラン・ペンデクの復讐
香山 滋:かやま しげる:ゴジラ
香山 滋:かやま しげる:海鰻荘奇談
香山 滋:かやま しげる:月ぞ悪魔
横溝 正史:よこみぞ せいし:羽子板娘
横溝 正史:よこみぞ せいし:獄門島
横溝 正史:よこみぞ せいし:怖ろしき四月馬鹿
横溝 正史:よこみぞ せいし:本陣殺人事件

数字として並べ替える。( n オプション)

$sort -n tmp01
0
00
a
ab
b
01
1
2
5
5
6
7
7
9
14

重複した行を表示しない。( u オプション)
重複した行は、一番最初の行が表示される。

$sort -n -u tmp01
ab
1
2
5
6
7
9
14

k オプションは、-k POS1[,POS2] という形式で、POS1からPOS2までを対象とする。POS2の指定がなければ、POS1以降全てが対象。

$sort -u -k2,2 tmp02
泡坂 妻夫:あわさか つまお:しあわせの書
香山 滋:かやま しげる:海鰻荘奇談
横溝 正史:よこみぞ せいし:獄門島
江戸川 乱歩:えどがわ らんぽ:人間椅子

ナチュラルな、数値ソート( V オプション)
対象をバージョン表記的に見なす。

$sort -V tmp01
0
00
01
1
2
5
5
6
7
7
9
14
a
ab
b
$cat tmp03
112.2.4.6
12.35.6.6
12.35.6.55
2.5.7.6
2.55.7.6
23.4.5.8
2.44.3.168
$sort -V tmp03
2.5.7.6
2.44.3.168
2.55.7.6
12.35.6.6
12.35.6.55
23.4.5.8
112.2.4.6
$sort -n tmp04
12
256
1,000
1001
2000
$sort -V tmp04
1,000
12
256
1001
2000
$sort --help
Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F
Write sorted concatenation of all FILE(s) to standard output.

長いオプションに必須の引数は短いオプションにも必須です.
Ordering options:

  -b, --ignore-leading-blanks  ignore leading blanks
  -d, --dictionary-order      consider only blanks and alphanumeric characters
  -f, --ignore-case           fold lower case to upper case characters
  -g, --general-numeric-sort  compare according to general numerical value
  -i, --ignore-nonprinting    consider only printable characters
  -M, --month-sort            compare (unknown) 
General help using GNU software: 
Report sort translation bugs to 
For complete documentation, run: info coreutils 'sort invocation'
$man sort
SORT(1)                                                                SORT(1)

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

書式
       sort  [-cm] [-bdfginruzM] [+POS1[-POS2] [-o OUTFILE] [-t SEPARATOR] [-k POS1[,POS2]  [-K  POS1[,POS2]  [-S  SIZE]  [-T   TEMPDIR]   [--reverse] [FILE...]

       sort [--help] [--version]

説明
       sort は与えられた各 FILE をソート・マージ・比較する。結果は結合されて標準出力に書き出される。 FILE が一つも与えられないと標準入力から読み込む。また FILE が ‘-’ だった場合には、そのファイルには標準入力が用いられる。

       GNU sort は (他の GNU ユーティリティと同じく) 入力ファイルの行の長さや、 行あたりのバイト数に制限はない。また入力ファイルの最後が改行でなければ、 sort は黙って改行を一つ追加する。

       エラーが起こると、 sort はステータス 2 で終了する。

       環境変数 TMPDIR が設定されていると、 sort は一時ファイルの置き場所として、デフォルトの /tmp の代わりにそのディレクトリを用いる。オプション -T TEMPDIR でも一時ファイルを置くディレクトリを指定できる。オプションは環境変数より優先される。

       -k や + オプションでのソートフィールドの場所指定は、 F.C という形式で行う。ここで F は用いるフィールドの番号で、C は先頭の文字の番号を、そのフ ィールドの先頭 (+POS の場合) あるいは直前のフィールドの末尾 (-POS の場合) から数えた数字である。 .C が省略された場合は、フィールドの先頭文字 になる。 -b オプションが指定されると、フィールド指定の .C の部分は、そのフィールドの空白でない最初の文字 (+POS の場合) あるいは直前のフィールドの末尾以降の空白でない最初の文字 (-POS の場合) から数えられる。

       ソートキーのオプションには、出力順序オプション (output ordering option) を含めることもでき、その場合はグローバルな順序オプションはそのフィー ルド には用いられない。 -b オプションはフィールド指定の +POS と -POS のどちらか片方にも、あるいは両方にも、独立に効力を及ぼすことができる 。  -b が グローバルなオプションから継承されたものである場合は、両方に影響する。キーは複数のフィールドにまたがってもかまわない。


オプション
   動作モード
       sort のデフォルトの動作はソート動作である。これは以下のオプションによって変更できる。

       -c     与えられたファイルがすでにソートされているかどうかをチェックする 。ソートされていないものがあった場合は、エラーメッセージを表示してステータス 1 で終了する。それ以外の場合は正常終了する。

       -m     与えられたファイル群をまとめてソートしてマージする。入力ファイルは事前にそれぞれソートされていなければならない。マージ動作ではなく、ソート動作を複数ファイルにまとめて行うこともできる。マージ動作が提供されているのは、 (これでよい場合は) こちらの方が高速だからである。

       行 のペアは以下のように比較される。キーフィールドが指定されている場合は 、 sort は順序オプションによってコマンドラインから指定された順に、それぞれの行からの各フィールドを比較する。比較動作は違いを発見するか全てのフィールドを尽くすまで継続される。

       グローバルオプションの ‘-bdfinrM’ のいずれかが指定されており、キーフ ィー ルドが一つも指定されていない場合は、 sort は行全体をグローバルオプションに従って比較する。

       最後に、全てのキーが等しい (あるいは順序オプションがまったく指定され なか った) 場合には、 sort は最終手段として、行を LC_COLLATE ではなくマシンの照合順序にしたがって 1 バイトずつ比較する。この最終手段の比較は  -r オプションに従う。 -s オプション (stable オプション) は、この最終手段比較を無効にし、全てのフィールドの比較結果が同じだった行の順序を、入力の順序のままにする。フィールドやグローバルオプションがまったく指定されなかった場合は、 -s オプションは無視される。

   出力順序オプション
       以下のオプションは、 sort が行を出力する順序に影響する。これらはグローバ ルにも、あるいは特定のキーフィールドの一部としても指定できる。キーフィールドが指定されなければ、グローバルオプションで行全体が比較される 。キ ーフィールド指定がされた場合、順序オプションが特に指定されなかったフィールドには、グローバルオプションが継承される。

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

       -d     「電話帳」順でソートする。アルファベット、数字、空白以外のキャラクタをすべて無視してソートする。

       -f      ソートの際に、小文字を対応する大文字と同じに扱う。例えば ‘b’ は ‘B’ と同じとみなされる。

       -g     strtod(3) を用いて数値に変換した後、その数値順にソートする。これを用いると、浮動小数点の理工学的な記法 (‘1.0e-34’ や ‘10e100’ など) を扱うことができる。このオプションは、他に手段がない場合に限って用いること。これは -n よりずっと遅いし、有効桁数が多すぎると 、丸めたかたちで比較されてしまう。さらに、倍精度浮動小数点の範囲で扱えない数値は 0 であるかのように処理される。またオーバーフロー・アンダーフロー・変換エラーは報告されない。

       -i     印字可能でない文字を無視する。

       -n     数値順に評価する。行先頭の文字列 (空白が前置されていても良い) を数値文字列として比較する。数値文字列は、先頭の - 符号 (なくても良い)、 0 桁以上の数字、そして小数点と 0 桁以上の数字 (なくても良い) からなる。

              sort  は浮動小数点表記文字列を、あまり普通でない方法で比較する。まず各文字を C の double 方に変換してからそれらの値を比較するのではなく、 2つの文字の基数点 (radix point) を揃えて、1 文字づつ比較するのである。この方法の利点は速度である。実際この方法は、 2つのそれぞれの文字列を double に変換してから比較するよりずっと速い (あるいは integer 変換に比べてすらずっと速い)。また精度の問題も生じない。多くのシステムでは、文字列を double に変換してから比較する方法では、精度は 16 桁に制限されてしまう。

              先頭の ‘+’ や指数表記は認識できない。このような文字列を数値的に比較するには -g を用いること。

       -r, --reverse
              比較の結果を逆順にする。より大きなキー値を持つ行が、より早く現われるようになる。

       -M     行頭の空白文字をすべて無視して最初に現われた 3 文字を、月の名称の 省略形とみなして ‘JAN’  (ラインフィード) ではなく  (ゼロバイト文字) で終了するとみなす。このオプションは ‘perl -0’ や  ‘find -print0’ や ‘xargs -0’ などと組み合わせて使うと便利で、 これらは任意のパス名を扱う際に信頼性を上げる効果を持つ (ラインフィード文字が含まれるパス名も正しく扱える)。

       -S SIZE
              SIZE KB のバッファを使う。単位指定文字 (後述) を用いれば、単位を変更できる。

       -T TEMPDIR
              TEMPDIR を一時ファイルを置くディレクトリにする。このオプションは環境変数 TMPDIR より優先される。-T オプションが複数回指定されると、それぞれのディレクトリが用いられ、巨大なソートやマージの際には性能が上がるかもしれない。

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

例
       · 数値的に降順 (逆順) にソートする。

              sort -nr

       · アルファベット順にソートし、第 1・第 2 フィールドは無視する。キーに開始フィールドとなる 3 だけを指定すれば、各行末までが比較される。

              sort -k3

       ·  第 2 フィールドで数値的にソートし、同じになったものを第 5 フィールドの第 3〜第 4 文字で更にソートする。フィールドの区切りとして ‘:’ を用いる。

              sort -t : -k 2,2n -k 5.3,5.4

       ‘-k  2,2’ の代わりに ‘-k 2’ と指定すると、 sort は第 2 フィールドから行末までの全ての文字を、プライマリな「数値」キーとして扱ってしまう。通常の用途では、1 つ以上のフィールドにまたがったキーを数値的に扱うと、望む結果は得られないだろう。

       ‘n’ の指定が最初のキーの末尾で行われている点にも注意してほしい。これは  ‘-k 2n,2’ や ‘-k 2n,2n’ としても効果は同じである。 ‘b’ 以外の全てのオプ ション指定は、開始フィールドに置いてもキー指定全体の末尾に置いても、 指定全体に効果を及ぼす。

       · パスワードファイルを第 5 フィールドでソートし、先頭の空白文字は無視する。第 5 フィールドが同じ値を持つ行は、第 3 フィールドのユーザー ID  で 数値的にソートする。

              sort -t : -k 5b,5 -k 3,3n /etc/passwd

       数値比較オプション -n はグローバルに用いても結果は同じ。

              sort -t : -n -k 5b,5 -k 3,3 /etc/passwd

       · 英大文字小文字の違いを無視してソートされた tags ファイルを生成する。

              find src -type f -print0 | sort -t / -z -f |
              xargs -0 etags --append

       こ の ‘-print0’, ‘-z’, ‘-0’ は、改行 (line feed) 文字を含むパス名がソート操作によって壊れないようにするためのものである。

       · 最後の例。フィールドの先頭・末尾の空白群を無視するには、第 1 キーの末尾フィールド指定もして、 ‘b’ オプションを使えばよい。

              sort -t : -n -k 5b,5b -k 3,3 /etc/passwd

       あるいはグローバルな指定を -n の代わりに -b にして、第 2 キーのオプションに ‘n’ を追加するかたちでもよい。

              sort -t : -b -k 5,5 -k 3,3n /etc/passwd

乗数
       数値の後には、倍数を指定するサイズ指定文字と、通常のバイトを意味する  B または 10 進の「商業用」バイトを意味する D を続けて置くことができる。たとえば ‘1KB’ は ‘1024’ と等しく、‘1KD’ は ‘1000’ と等しい。この例外は b (512 バイト)、c (1 バイト)、 w (使うべきでない - System V では 2 を意味し、 4.2BSD では 4 を意味する) の 3 つで、これらの後に B や D をおくことはできない。


       k      キロ: 通常バイト指定なら 2^10 = 1024、10 進バイト指定なら 10^3 =  1000

       M      メガ: 2^20 = 1,048,576 または 10^6 = 1,000,000

       G      ギガ: 2^30 = 1,073,741,824 または 10^9 = 1,000,000,000

       T      テラ: 2^40 = 1,099,511,627,776 または 10^12 = 1,000,000,000,000

       P       ペタ:  2^50  =  1,125,899,906,842,624   ま  た  は   10^15   =  1,000,000,000,000,000

       E       エクサ:  2^60  =  1,152,921,504,606,846,976   ま たは 10^18 = 1,000,000,000,000,000,000

       Z      ゼタ: 2^70 =  1,180,591,620,717,411,303,424   ま た は  10^21  = 1,000,000,000,000,000,000,000

       Y       ヨタ:  2^80 = 1,208,925,819,614,629,174,706,176 または 10^24 =  1,000,000,000,000,000,000,000,000

移植性
       sort の歴史的な (BSD と System V の) 実装では、いくつかのオプション (特に -b, -f, -n) の解釈が異なる。 POSIX に従えば、-n はもはや -b を暗黙のうちに指定することはない。このあたりを首尾一貫させるため、 -M も同様に変更されている。これによって、曖昧な指定ではフィールド内の文字位置の指定の意味が変わってしまうかもしれない。唯一の解決法は、 -b を明示的に指定することである。

ロケール
       LC_COLLATE
              ( 特に他の指定がない限り) 全ての比較で用いられる文字の照合順序を指定する。

       LC_CTYPE
              -b, -d, -f, -i といった出力順序オプションの動作に影響する。

       LC_NUMERIC
              基数文字と桁区切り文字 (, など) を指定する。

       LC_TIME
              月名のスペルを決める。 -M に影響する。

注意
       プログラムのバグについては bug-textutils@gnu.org に報告してください。
       man ページは Ragnar Hojland Espinosa  が作成しました。



GNU textutils 2.1               7 October 2002                         SORT(1)