sortコマンドで数値順に並べ替える方法を完全ガイド!初心者でもわかるLinuxのソートの基本
生徒
「数字がたくさん書かれたファイルを、小さい順に並べたいんですが、どうすればいいですか?」
先生
「それならLinuxのsortコマンドを使えば簡単に並べ替えができますよ。」
生徒
「普通に並べ替えるのと何が違うんですか?」
先生
「そのまま使うと文字として並び替えますが、オプションを使うと数値として正しく並べ替えできます。」
生徒
「数字として並べるってどういうことですか?」
先生
「実際の例を見ながら説明していきますね。とてもシンプルなので安心してください。」
1. sortコマンドとは?
sortコマンドは、Linuxでテキストを並べ替えるための基本コマンドです。ファイルの中身やコマンドの結果を、順番に並び替えることができます。
例えば、「名前順」「アルファベット順」「数値順」など、さまざまな並べ替えが可能です。
Windowsでいうと、Excelの並び替え機能のようなイメージです。Linuxではそれをコマンドで簡単に実現できます。
2. 文字列として並べ替える場合の注意点
まずは基本の動きを見てみましょう。数字が書かれたファイルをそのままsortすると、実は数字としてではなく文字として並び替えされます。
cat numbers.txt
10
2
30
4
sort numbers.txt
10
2
30
4
一見おかしく見えますが、これは「1」「2」「3」という文字として比較しているためです。
つまり、「10」は「2」より前に来てしまうのです。
3. 数値順に並べ替える方法
数字として正しく並べたい場合は、-nオプションを使います。
-nは「numeric」の略で、数値として比較するという意味です。
sort -n numbers.txt
2
4
10
30
これで、小さい数字から順番に並べ替えることができました。
日付や価格、点数などのデータを扱うときにとても重要な機能です。
4. 逆順に並べ替える方法
大きい順に並べたい場合は、-rオプションを使います。
これは「reverse」の略で、逆順に並べるという意味です。
sort -n -r numbers.txt
30
10
4
2
-nと組み合わせることで、数値の大きい順に並べることができます。
ランキングや売上順などを確認するときに便利です。
5. 列ごとに数値ソートする方法
実際のデータでは、複数の情報が並んでいることが多いです。その場合は、特定の列を基準に並べ替えることができます。
cat data.txt
apple 100
banana 20
orange 300
sort -k2 -n data.txt
banana 20
apple 100
orange 300
-k2は「2列目」を意味します。
このように、数値がある列を指定することで、実務に近いデータ処理ができます。
6. sortコマンドとパイプの組み合わせ
Linuxでは、コマンドの結果を別のコマンドに渡す「パイプ」という仕組みがあります。
|を使うことで、柔軟な処理が可能になります。
echo -e "5\n1\n9\n3" | sort -n
1
3
5
9
このように、ファイルがなくてもその場でデータを並べ替えることができます。
ちょっとした確認やテストにも便利です。
7. sortとuniqの違いと組み合わせ
sortとよく一緒に使われるコマンドにuniqがあります。
uniqは重複行を削除するコマンドですが、事前に並べ替えておく必要があります。
cat sample.txt
3
1
3
2
1
sort -n sample.txt | uniq
1
2
3
このように、数値順に並べたあとで重複を削除することで、きれいなデータに整えることができます。
8. 初心者が覚えておきたいポイント
最後に、初心者の方が覚えておくべきポイントを整理します。
- sortはテキストを並べ替える基本コマンド
- 何も指定しないと文字列として並ぶ
- 数値順にするには
-nを使う - 逆順は
-rを使う - 列指定は
-kで行う
最初は難しく感じるかもしれませんが、実際にコマンドを打ってみることで自然と理解できます。
まとめ
今回は、Linuxの基本コマンドのひとつであるsortコマンドを使って、数値順に並べ替える方法について詳しく解説しました。sortコマンドは、テキストファイルの並び替えやデータ整理において非常に重要な役割を持つコマンドであり、Linux初心者から実務レベルのエンジニアまで幅広く利用されています。
まず理解しておきたいポイントとして、sortコマンドはデフォルトの状態では文字列として比較を行うため、数字であっても文字として扱われてしまうという点があります。この仕様を知らないまま使用すると、意図しない並び順になることがあります。例えば、十という数字は二よりも前に表示されてしまうため、正しい数値順になりません。
この問題を解決するために重要なのが、数値として比較するためのオプションであるnオプションです。sortコマンドにnオプションを付けることで、文字列ではなく数値として比較され、小さい順に正しく並び替えることができます。これは、点数や売上金額、ログデータの数値などを扱う際に非常に重要です。
また、逆順に並べ替えたい場合にはrオプションを使用します。nオプションと組み合わせることで、大きい数値から順番に並べることができ、ランキング表示やデータ分析にも活用できます。これらのオプションは実務でも頻繁に使用されるため、しっかりと覚えておきましょう。
さらに、実際のデータ処理では複数の列を持つデータを扱うことが多く、その場合にはkオプションを使って特定の列を基準に並べ替えることが重要になります。例えば、商品名と価格が並んでいるデータから価格順に並べ替えることで、実用的なデータ整理が可能になります。
Linuxでは、コマンド同士を連携させるパイプという仕組みも非常に重要です。sortコマンドは他のコマンドと組み合わせることで、より柔軟で強力な処理が可能になります。特にuniqコマンドとの組み合わせは頻出であり、重複データの削除を行う際には、事前にsortで並べ替える必要があります。この流れはログ解析やデータクレンジングの基本となるため、しっかりと理解しておくことが大切です。
初心者の方にとっては、コマンドライン操作は難しく感じるかもしれませんが、今回紹介したような基本的なコマンドとオプションを一つずつ理解していくことで、確実にスキルアップすることができます。実際に手を動かしてコマンドを実行しながら学ぶことで、より深く理解できるようになります。
サンプルプログラムで復習
cat numbers.txt
10
2
30
4
sort numbers.txt
10
2
30
4
sort -n numbers.txt
2
4
10
30
sort -n -r numbers.txt
30
10
4
2
echo -e "5\n1\n9\n3" | sort -n
1
3
5
9
sort -n sample.txt | uniq
1
2
3
生徒
「sortコマンドって、ただ並べ替えるだけだと思っていましたが、オプションでこんなに動きが変わるんですね。」
先生
「その通りです。特に数値順に並べるnオプションはとても重要なので、必ず覚えておきましょう。」
生徒
「そのままだと文字として扱われるのは意外でした。気を付けないと間違った結果になりますね。」
先生
「そうですね。Linuxコマンドは仕様を理解して使うことが大切です。」
生徒
「逆順にしたり、列で並べたりできるのも便利ですね。実務でも使えそうです。」
先生
「はい。ログ分析やデータ整理では必須のスキルになります。パイプやuniqと組み合わせることで、さらに強力になりますよ。」
生徒
「これからは実際にコマンドを打ちながら練習してみます。」
先生
「それが一番の近道です。繰り返し使うことで自然と身につきます。」