UNIX/Linuxの部屋 sortコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド sort 行単位でソート・並べ替えを行う

最終更新


UNIX/Linux の sort コマンドは、ファイル内容や文字列をソートするコマンドである。何番目のカラムに従ってソートするか、文字列としてソートするか数値としてソートするか、昇順・降順か、などを指定できる。

sort コマンドの基本的な使い方
ファイルの内容をソートする。
% sort sample.txt
コマンドの実行結果をソートする。
% command | sort

オプション
-c すでにソートされているかを調べる
-f 大文字と小文字の区別をしない
-m 複数のファイルをソートするとき、すでにそれぞれソートされている場合に指定。
-mをつけなくてもソート結果は同じだが、高速になる
-r 逆順にソートする
-R または --random-sort
ランダムにソートする。ただし sort -R はハッシュでソートするため、同じ行があると固まって出力されてしまう。重複値が隣り合うと困る場合は、shuf コマンドを使うとよい。
% for i in 1 2 2 2 3 3 3 3 3 4 5 6 7 8 ; do echo $i ; done | sort -R
→ sort -R だと 2 や 3 が必ず隣り合って出力される
% for i in 1 2 2 2 3 3 3 3 3 4 5 6 7 8 ; do echo $i ; done | shuf
→ shuf コマンドだと大丈夫
-n 文字列ではなく、数字とみなしてソート
% sort sample (デフォルトでは文字列としてソート)
1
12
2
20
4
% sort -n sample (数字としてソート)
1
2
4
12
20
-u 同一内容の行は1度しか表示しない。
% cat sample | sort
abc
def
def
ghi
% cat sample | sort -u
abc
def (同じ行は一度しか表示しない)
ghi
+数字 指定の数のフィールドに従ってソートする。
% ls -l
-rw-rw-r-- 1 user group 869083 Jan 23 22:09 RMAIL
-rw-rw-r-- 1 user group 1721780 Jan 24 05:20 ba2.tgz
drwxr-xr-x 2 user group 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 user group 4540 Jan 26 17:34 english.dvi
⇒ ls のデフォルト動作は、ファイル名によってソートされる
% ls -l | sort +4
drwxr-xr-x 2 user group 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 user group 4540 Jan 26 17:34 english.dvi
-rw-rw-r-- 1 user group 869083 Jan 23 22:09 RMAIL
-rw-rw-r-- 1 user group 1721780 Jan 24 05:20 ba2.tgz
⇒ 4番目のフィールド=ファイルサイズのフィールドに従ってソート
% ls -l | sort +6
-rw-rw-r-- 1 user group 1721780 Jan 24 05:20 ba2.tgz
-rw-rw-r-- 1 user group 4540 Jan 26 17:34 english.dvi
drwxr-xr-x 2 user group 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 user group 869083 Jan 23 22:09 RMAIL
⇒ 6番目のフィールド=作成時刻のフィールドに従ってソート
0番目のフィールドは行頭を表すので、sort +0 と sort は同じである。
>> Solaris10オンラインマニュアル(man) Solaris10 sort(1)
>> Linuxオンラインマニュアル(man) Linux sort(1)
>> FreeBSDオンラインマニュアル(man) FreeBSD sort(1)


頑張って書いたおすすめコンテンツ!
クラウドサービス徹底比較・徹底解説