sort はファイルの行を並べ替えるコマンドです。数字として並べる `-n`、重複を消す `-u`、CSV の列を指定する `-t` と `-k` の使い方を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
sort [オプション] ファイル...
行を並べ替えて表示します。 元のファイルは変わりません。
$ cat names.txt
grace
ada
linus
ada
margaret
$ sort names.txt
ada
ada
grace
linus
margaret
既定はアルファベット順(辞書順)です。
-r で逆順になります。
$ sort -r names.txt
margaret
linus
grace
ada
ada
数字の並んだファイルをそのまま sort に渡すと、おかしな順番になります。
$ sort sizes.txt
10
100
2
9
文字として1桁ずつ比べているので、10 が 2 より前に来ます。
数として比べるには -n を付けます。
$ sort -n sizes.txt
2
9
10
100
大きい順にしたいときは -r と組み合わせます。
$ sort -nr sizes.txt
100
10
9
2
-u を付けると、同じ行は1つにまとまります。
$ sort -u names.txt
ada
grace
linus
margaret
-t で区切り文字、-k で何列目かを指定します。
CSV を名前(2列目)の順に並べるなら、こうなります。
$ sort -t, -k2 users.csv
1,ada,web
3,grace,infra
2,linus,infra
id,name,team
見出しの行も1行として並べ替えられるので、末尾に移動しています。
sort がいちばん活きるのは、uniq -c と組んだ集計です。
$ cut -d' ' -f1 access.log | sort | uniq -c | sort -nr
3 200
2 404
1 500
3つに分けて読むと、やっていることは単純です。
| 段 | 役割 |
|---|---|
sort | 同じ値を隣どうしに集める |
uniq -c | 隣り合う重複を数える |
sort -nr | その数で多い順に並べ替える |
uniq は隣り合った行しか見ないので、先に sort しておくことが必ず要ります。
sort は、多い順・大きい順に見たいときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| ステータスコードを多い順に数える | cut -d' ' -f1 access.log | sort | uniq -c | sort -nr |
| 重複を消して一覧にする | sort -u emails.txt |
| CSV を特定の列で並べ替える | sort -t, -k2 users.csv |
| 並べ替えた結果を残す | sort names.txt > sorted.txt |
数字は -n が要ります。
ファイルサイズや件数を並べるのに -n を忘れると、100 が 9 より前に来ます。
元のファイルは変わりません。
$ sort names.txt > sorted.txt
$ cat sorted.txt
ada
ada
grace
linus
margaret
結果を残したいときは、このように別のファイルへ書き出します。
uniq の前には sort が必要です。
uniq は隣り合った行だけを見ます。
離れた場所にある同じ行は、並べ替えてからでないとまとまりません。
見出しの行も並べ替えの対象です。
CSV の1行目を残したいときは、sort に渡す前に外しておく必要があります。
webterm.appこのサイト
ターミナル応用
特定場面で役立つコマンドを学ぶ
learn.webterm.app別のサイト
