sort - ソート、マージ、順序の確認


sort コマンドによって、テキストファイルのソート、マージ、順序の確認を行うことができます。

% sort [filename]

文字列としてソートします。

% sort [filename] [filename]

のように複数ファイルを指定すると、ファイルをマージ(併合)してソートします。 標準入力から読み込ませることも可能なので、

% cat [filename] | sort 

の様にして使うこともできます。ある程度オプションを説明します。

-cすでにソートされているかを調べる
-mマージのみを行う
-nnumeric。文字列比較ではなく数字比較でソート
-rreverse。普通は小さい順でソートを行うが、逆の大きい順でソート
-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 オプションを使用します。


xrea