新Linux入門|sortコマンドを理解しよう!ファイル内容を並べ替える方法

 Linuxでテキストファイルを扱っていると、「データを順番に並べ替えたい」と思うことはありませんか?
 たとえば商品リストをアルファベット順にしたい、ログを数値で並べたい、特定の列で並び替えたい、そんなときに活躍するのが sortコマンド です。

sortコマンドは、ファイルの行を並べ替えて表示するための基本コマンドです。
単純な文字順だけでなく、数値順、列(フィールド)指定、降順など、柔軟な並べ替えが可能です。

📘 sortコマンドの概要

sortコマンドは、ファイルの中の各行を比較し、指定した条件に従って順番を並べ替えるコマンドです。
デフォルトでは「辞書順(アルファベット順)」で並べ替えますが、オプションを指定することで
数値順・逆順・特定の列単位での並べ替えも行えます。

📘 コマンド書式

sort [オプション] ファイル名

📗 例

[suzuki@AlmaLinux ~]$ sort data.txt

このように実行すると、ファイル data.txt の内容が辞書順に並び替えられて表示されます。

⚙️ 主なオプションと説明

オプション説明
-r降順(逆順)にソートします。
-n文字列ではなく数値としてソートします。
-k KEY指定した列(フィールド)を基準にソートします(デフォルトは1列目)。
-t CHAR列を区切るデリミタ(区切り文字)を指定します(デフォルトはタブ)。
-u重複行を削除してソートします。
-f大文字と小文字を区別せずにソートします。
-b先頭の空白を無視してソートします。

💡 ポイント

  • -n と -r の組み合わせ(-nr)で「数値の降順ソート」が可能。
  • -t と -k を併用すると、CSVや区切り付きテキストの並べ替えに便利です。
  • -u を使うと重複を自動で省けるため、リストの整理にも役立ちます。

🧪 使用例と出力解説

まず、以下のようなファイル data.txt を用意します。

[suzuki@AlmaLinux ~]$ cat data.txt
1:orange:オレンジ
11:grape:ぶどう
13:peach:もも
53:cherry:さくらんぼ
997:apple:りんご
21:melon:メロン
8:banana:バナナ

① 辞書順にソート(デフォルト)

[suzuki@AlmaLinux ~]$ sort data.txt
11:grape:ぶどう
13:peach:もも
1:orange:オレンジ
21:melon:メロン
53:cherry:さくらんぼ
8:banana:バナナ
997:apple:りんご

💬 デフォルトでは文字列として並び替えを行うため、1 → 2 → 5 → 8 → 9 のような辞書順になります。
数値ではなく、文字列の最初の桁で比較している点に注目です。

② 数値順にソート(-n)

[suzuki@AlmaLinux ~]$ sort -n data.txt
1:orange:オレンジ
8:banana:バナナ
11:grape:ぶどう
13:peach:もも
21:melon:メロン
53:cherry:さくらんぼ
997:apple:りんご

💬 -n オプションを付けると、文字列ではなく数値として正しく並べ替えが行われます。
ファイル中の「番号」や「ID」を基準にしたいときに便利です。

③ 数値で降順にソート(-nr)

[suzuki@AlmaLinux ~]$ sort -nr data.txt
997:apple:りんご
53:cherry:さくらんぼ
21:melon:メロン
13:peach:もも
11:grape:ぶどう
8:banana:バナナ
1:orange:オレンジ

💬 -r は降順(逆順)を意味します。-n と組み合わせることで、数値の大きい順に並べ替えます。

④ 特定の列(2列目)をキーにしてソート(-t, -k)

[suzuki@AlmaLinux ~]$ sort -t ':' -k2 data.txt
997:apple:りんご
8:banana:バナナ
53:cherry:さくらんぼ
11:grape:ぶどう
21:melon:メロン
1:orange:オレンジ
13:peach:もも

💬 -t で区切り文字(ここでは : )を指定し、-k2 で2列目をソートキーにしています。
この例では英単語(果物名)順に並べ替えています。

🧩 sortコマンドの応用ポイント

操作目的使用例説明
数値の昇順sort -n data.txt数字が小さい順に並べる。
数値の降順sort -nr data.txt数字が大きい順に並べる。
特定列で並べ替えsort -t ':' -k3 data.txt区切り文字を指定し、3列目を基準にソート
重複削除sort -u data.txt重複行を削除してソート
大文字小文字無視sort -f data.txt"A" と "a" を同一視してソート

💡 コツ
 複雑なデータでも、-t(区切り文字)と-k(列指定)を組み合わせることで自在に並べ替え可能です。

✅ まとめ

  • sortコマンド は、テキストファイルの行を並べ替えるための基本コマンド。
  • 辞書順・数値順・特定列指定・重複除去 など、多彩なオプションで柔軟に使える。
  • -t(区切り文字指定)と -k(列指定)を組み合わせれば、複雑なCSV形式にも対応可能。
  • AlmaLinux 9.6 でも、ログ整理やデータ整形に欠かせない強力なツールです。

💬 まずは sort data.txt を試してみて、どのように順序が変わるか体験してみましょう。
慣れてきたら -n や -t ':' -k2 を使って、実践的な並べ替えにも挑戦してみてください!