sort - ソート、マージ、順序の確認
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 オプションを使用します。