sort -kオプションの使い方を完全ガイド!初心者でもわかるLinuxで特定の列を並び替える方法
生徒
「Linuxでデータを並び替えたいんですけど、数字や名前がぐちゃぐちゃで……どうしたらいいですか?」
先生
「それならsortコマンドを使います。特に-kオプションを使うと、並び替えたい列を指定できます。」
生徒
「列って何ですか?表みたいなものですか?」
先生
「そうです。表の何番目を基準に並び替えるかを決めるのが-kなんですよ。」
1. sortコマンドとは?
sortコマンドは、Linuxで文字や数字が並んだデータを順番に並び替えるための基本コマンドです。テキストファイルの中身を、名前順、数字順、日付順などに整理したいときによく使われます。
パソコン初心者の方には、Excelの「並び替え」機能を文字だけで操作するイメージを持つとわかりやすいです。黒い画面(ターミナル)で命令を書く代わりに、細かい条件まで指定できるのが特徴です。
2. フィールド(列)とは何かを理解しよう
フィールドとは、1行の中で区切られたデータのかたまりのことです。多くの場合、スペースやタブで区切られています。
たとえば「名前 年齢 点数」というデータがある場合、名前が1番目、年齢が2番目、点数が3番目のフィールドになります。sort -kは、この「何番目か」を指定するためのオプションです。
3. sort -kの基本的な書き方
-kオプションの基本形はとてもシンプルです。
sort -k 2 data.txt
山田 20 80
佐藤 18 90
鈴木 22 70
この例では、2番目のフィールド(年齢)を基準に並び替えています。数字が小さい順に並ぶので、18、20、22の順になります。
4. 数字として正しく並び替える方法
そのままsortを使うと、数字も文字として扱われます。そのため「100」が「20」より前に来ることがあります。これを防ぐには-nを組み合わせます。
sort -k 3 -n score.txt
佐藤 18 90
山田 20 80
鈴木 22 70
-nは「数値として並び替える」という意味です。点数や金額などを扱うときは、ほぼ必須のオプションです。
5. 開始位置と終了位置を指定する
-kは「どこからどこまで」を細かく指定できます。-k 2,2のように書くと、2番目のフィールドだけを使うという意味になります。
sort -k 1,1 name.txt
佐藤 東京
鈴木 大阪
山田 名古屋
この指定を覚えておくと、複雑なデータでも安心して並び替えできます。
6. 区切り文字を変更する方法
データがカンマ区切り(CSV)の場合は、そのままでは正しく列を認識できません。そんなときは-tオプションを使います。
sort -t , -k 2 data.csv
山田,20,80
佐藤,18,90
鈴木,22,70
-t ,は「カンマで区切られている」と教える指定です。これで表として正しく扱われます。
7. 逆順(大きい順)に並び替える
成績を高い順にしたい場合などは、-rを追加します。これは「逆順」を意味します。
sort -k 3 -n -r score.txt
佐藤 18 90
山田 20 80
鈴木 22 70
オプションは順番を入れ替えても問題ありません。読みやすい並びで書くのがおすすめです。
8. sort -kが役立つ場面
sort -kは、ログファイルの整理、名簿の並び替え、売上データのチェックなど、日常的なLinux作業で頻繁に使われます。
最初は難しく感じますが、「何列目で並び替えたいか」を意識するだけで、一気に理解しやすくなります。紙の表を並べ替える感覚で考えるのがコツです。