Diff of UNIX/コマンド/テキスト処理/sort


TITLE:sort - ソート、マージ、順序の確認
#navi(UNIX/コマンド)
#contentsx

sort コマンドによって、テキストファイルのソート、マージ、順序の確認を行うことができます。
 % sort [filename]
文字列としてソートします。
 % sort [filename] [filename]
のように複数ファイルを指定すると、ファイルをマージ(併合)してソートします。
標準入力から読み込ませることも可能なので、
 % cat [filename] | sort 
の様にして使うこともできます。ある程度オプションを説明します。
|-c|すでにソートされているかを調べる|
|-m|マージのみを行う|
|-n|numeric。文字列比較ではなく数字比較でソート|
|-r|reverse。普通は小さい順でソートを行うが、逆の大きい順でソート|
|-o [output]|出力ファイルを指定|
|-u|同一行を削除|
|-d|辞書編集順|
|-f|大文字と小文字の区別をしない|
|+[n]|[n] 番目のフィールド (空白文字を区切り文字とする) を対象としたソート|
|-k [n]|+[n] と同じく [n] 番目のフィールド (空白文字を区切り文字とする) を対象としたソート|
|-t [char]|[char] をフィールド区切り文字として使用|
たとえば
 1 c
 3 e
 12 a
 9 x
↑という内容のファイル [file1] と
 9 d
 1 c
 20 f
 5 o
↑という内容のファイル [file2] があったとします。
 % sort [file1] 
 1 c
 12 a
 3 e
 9 x 
↑文字列ソートなのでこのようになります。
 % sort -n [file1]
 1 c
 3 e
 9 x 
 12 a
↑数字ソートなのでこのようになります。
 % sort [file1] [file2]
 1 c
 1 c
 12 a
 20 f
 3 e
 5 o
 9 d 
 9 x 
↑複数ファイルを指定してマージさせてソートすることもできます。
 % sort -u [file1] [file2]
 1 c
 12 a
 20 f
 3 e
 5 o
 9 d 
 9 x
↑オプション -u で同一行を削除します。
 % sort -un [file1] [file2]
 1 c
 3 e
 5 o
 9 d
 12 a
 20 f
↑数字ソートで同一行を削除します。9 d と 9 x がありましたが、
d, x は数字ではないため、数字ソートとしては 9 の部分だけが見られ、
同一とみなされます。片方だけが出力されます。
 % sort +1 [file1]
 12 a
 1 c
 3 e
 9 x 
↑1番目のフィールド(最初が 0)以降がソート対象となります。
デフォルトのフィールド区切り文字は空白文字です。
指定したい場合は -t オプションを使用します。

#navi(UNIX/コマンド,,footer)
xrea