Linuxのコマンドライン操作では、テキストファイルや出力結果を整えて表示することがよくあります。なかでも並び替え(ソート)処理は、ログ解析やレポート作成など、さまざまな場面で欠かせない作業です。
「sort」コマンドは、テキストの並び替えを簡単に実行できる便利なツールです。本記事では、sortコマンドの基本的な使い方から応用的なオプション、具体的な使用例までをわかりやすく解説していきます。初心者の方も安心して読み進められる内容となっていますので、ぜひ最後までご覧ください。
sortコマンドとは?
sort
コマンドは、LinuxやUNIX系OSにおいてテキストデータを並び替えるために使われる基本的なコマンドです。標準入力またはファイルから読み込んだテキストを、行単位で昇順または降順に並び替えて出力します。
構文は以下の通りです。
sort [オプション] [ファイル名]
例えば、以下のようなファイル「names.txt」があったとします。
Satoshi
Yuki
Taro
Aya
これに対して単純に sort names.txt
と実行すると、アルファベット順で並び替えた結果が表示されます。
Aya
Satoshi
Taro
Yuki
デフォルトでは、アルファベット順(辞書順)で昇順に並び替えられます。
sortコマンドの主なオプション一覧
sortコマンドには多くのオプションがあり、用途に応じて柔軟に使い分けることができます。よく使われる主なオプションを紹介します。
オプション | 説明 |
---|---|
-r | 降順にソート |
-n | 数値としてソート |
-k | 指定したフィールドでソート |
-t | 区切り文字を指定 |
-u | 重複行を削除 |
-o | ソート結果をファイルに出力 |
-c | ソートされているかを確認 |
これらのオプションを組み合わせることで、より高度な並び替えが可能になります。
数値の並び替えをしたい場合:-nオプション
テキストに数値が含まれる場合、単純な辞書順でソートすると期待した順序にならないことがあります。たとえば、以下の「scores.txt」ファイルを考えます。
100
20
3
45
このデータに対して sort scores.txt
を実行すると、結果は以下のようになります。
100
20
3
45
これは文字列としての並び替えであり、1
が最初に来る100が先頭に来てしまっています。数値として正しく並び替えるには -n
オプションを使用します。
sort -n scores.txt
結果:
3
20
45
100
このように、数値を意識したソートが可能になります。
複数列のデータをフィールドで並び替える:-kオプションと-tオプション
複数列のデータがある場合、特定の列を基準に並び替えたいことがあります。そんな時に使うのが -k
(キー)オプションです。
例として、以下の「data.txt」ファイルを見てみましょう。
001,Apple,300
002,Banana,150
003,Orange,250
カンマ区切りの3列構成になっています。価格(3列目)でソートしたい場合は以下のように記述します。
sort -t ',' -k 3 -n data.txt
ここでは、-t ','
で区切り文字をカンマに指定し、-k 3
で3番目のフィールドをキーとして、-n
で数値順にソートしています。
結果:
002,Banana,150
003,Orange,250
001,Apple,300
非常に読みやすく、業務でも重宝される使い方です。
重複行を取り除いて並び替え:-uオプション
ファイルの中に重複行がある場合、それを取り除きつつ並び替えるには -u
オプションを使用します。
例:
Tokyo
Osaka
Nagoya
Tokyo
Osaka
このファイルを以下のように処理します。
sort -u cities.txt
結果:
Nagoya
Osaka
Tokyo
sort
とuniq
を別々に使う方法もありますが、-u
は1ステップで済むので便利です。
ソート済みか確認する:-cオプション
ファイルがすでにソートされているかどうかをチェックしたい場合は -c
オプションを使います。
sort -c sorted_file.txt
何も出力されなければソート済みです。ソートされていない場合はエラーメッセージとともに、問題の行番号が出力されます。
ソート結果を別のファイルに保存:-oオプション
元のファイルを上書きしたり、新しいファイルに結果を保存したい場合は -o
オプションを使います。
sort -n scores.txt -o sorted_scores.txt
これで並び替えた結果が sorted_scores.txt
に保存されます。元のファイルを変更したいときにもこの方法が使えます。
実践例:ログファイルを並び替える
実務ではログファイルをソートして、特定のデータを見つけやすくしたい場面があります。
例:access.log
にタイムスタンプとアクセスユーザーが記録されている場合。
2025-03-30 user1
2025-03-29 user2
2025-03-31 user3
このログを日付順に並び替えるには:
sort access.log
結果:
2025-03-29 user2
2025-03-30 user1
2025-03-31 user3
さらに、逆順に並べるには -r
をつけます。
sort -r access.log
sortコマンドと他のコマンドの組み合わせ(パイプ)
sortは他のコマンドと組み合わせることで、より強力なツールになります。
例:ls
コマンドと組み合わせて、ファイルサイズ順に表示
ls -l | sort -k 5 -n
ここでは、ls -l
の出力結果を5列目(ファイルサイズ)で数値順に並び替えています。見たい情報を見やすく整える技術として非常に便利です。
まとめ:sortコマンドで作業を効率化しよう
sortコマンドは、テキスト処理において非常に基本でありながら、幅広い場面で活躍する強力なツールです。オプションをうまく活用すれば、数値の並び替え、特定列でのソート、重複行の削除なども簡単に実現できます。
特にシェルスクリプトやログ解析、データ前処理の場面では欠かせない存在です。今回ご紹介した内容をベースに、ぜひ実際の作業で活用してみてください。きっと作業効率がぐっと上がるはずです。