Linuxコマンド一覧

sortコマンド|行を並べ替える

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
sort を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

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桁ずつ比べているので、102 より前に来ます。 数として比べるには -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 を忘れると、1009 より前に来ます。

元のファイルは変わりません。

$ sort names.txt > sorted.txt
$ cat sorted.txt
ada
ada
grace
linus
margaret

結果を残したいときは、このように別のファイルへ書き出します。

uniq の前には sort が必要です。 uniq は隣り合った行だけを見ます。 離れた場所にある同じ行は、並べ替えてからでないとまとまりません。

見出しの行も並べ替えの対象です。 CSV の1行目を残したいときは、sort に渡す前に外しておく必要があります。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

uniq / wc / grep / cut

よくある質問

10 が 2 より前に来てしまうのはなぜですか?
既定では1文字ずつ文字として比べるからです。先頭の 1 と 2 を比べた時点で 10 のほうが前になります。数として比べたいときは `-n` を付けてください。
重複した行を消すにはどうしますか?
`sort -u` です。`uniq` でも消せますが、`uniq` は隣り合った行しか見ないので、先に `sort` で並べておく必要があります。
CSV の2列目で並べ替えるにはどう書きますか?
`sort -t, -k2 users.csv` です。`-t` で区切り文字、`-k` で何列目かを指定します。
sort は元のファイルを書き換えますか?
書き換えません。結果は画面に出るだけなので、残したいときは `sort names.txt > sorted.txt` のようにファイルへ書き出します。
多い順に集計するにはどうしますか?
`sort | uniq -c | sort -nr` の3段です。並べてから数え、その数でもう一度並べ替えます。