sortコマンドで重複行を削除する方法!初心者でもわかるLinuxのソートとユニーク処理
生徒
「同じ内容の行がたくさんあるファイルって、どうやって整理すればいいですか?」
先生
「Linuxではsortコマンドを使うと、並び替えと同時に重複行を削除できますよ。」
生徒
「並び替えと削除が一緒にできるんですか?」
先生
「はい。オプションを付けるだけで簡単にできます。初心者でもすぐ使えるので、一緒に確認していきましょう。」
1. sortコマンドとは?
sortコマンドは、Linuxでテキストを並び替えるための基本コマンドです。ファイルの中の行を、アルファベット順や数字順に整列させることができます。
たとえば、バラバラに書かれた名前リストやログファイルを整理したいときに使います。さらに便利なのが、重複している行を削除する機能です。
イメージとしては、紙に書かれた名前を五十音順に並べ替えながら、同じ名前を一つにまとめるような作業です。
2. 重複行とは何か?
重複行とは、同じ内容が複数回書かれている行のことです。たとえば次のようなファイルを考えてみましょう。
cat names.txt
apple
banana
apple
orange
banana
この場合、appleやbananaが複数回登場しています。こうした重複を取り除くことで、データを見やすく整理できます。
3. sortコマンドで重複行を削除する基本
sortコマンドでは、-uオプションを使うことで、重複行を削除できます。
sort -u names.txt
apple
banana
orange
このように、同じ内容の行が1つにまとめられます。内部では、まず並び替えを行い、そのあと重複を取り除く仕組みです。
つまり、並び替えと重複削除が同時にできる便利なコマンドです。
4. uniqコマンドとの違い
重複行の削除には、uniqコマンドもあります。しかし、uniqには重要な特徴があります。
隣り合った同じ行しか削除できないという点です。
cat names.txt | uniq
apple
banana
apple
orange
banana
このように、並び替えがされていない場合、正しく削除されません。
sort names.txt | uniq
apple
banana
orange
このように、sortと組み合わせて使うことで正しく重複削除ができます。
まとめると、次のようになります。
sort -u:並び替えと削除を同時に実行uniq:並び替え後に重複削除
5. sort -uの実用例
実際の現場では、ログやデータの整理に使われます。たとえば、アクセスログのIPアドレス一覧を整理する場合です。
cat access.log | sort -u
192.168.0.1
192.168.0.2
192.168.0.3
このように、同じIPアドレスをまとめて確認できます。データ分析やトラブル調査でも役立ちます。
6. オプションの組み合わせでさらに便利に
sortコマンドは、他のオプションと組み合わせることで、より便利に使えます。
数値で並び替えながら重複削除する場合は、-nを使います。
sort -n -u numbers.txt
1
2
3
10
逆順で並び替える場合は、-rを使います。
sort -r -u names.txt
orange
banana
apple
このように、用途に応じて柔軟に使えます。
7. ファイルを上書きする方法
結果を別のファイルに保存することもできます。
sort -u names.txt > unique_names.txt
このコマンドでは、重複を削除した結果がunique_names.txtに保存されます。
元のファイルを残しつつ、新しい整理済みファイルを作れるので安全です。
8. sortコマンドを使うメリット
sortコマンドで重複行を削除するメリットは次の通りです。
- 大量のデータを一瞬で整理できる
- 同じデータの重複を防げる
- ログ解析やデータ分析に役立つ
特に、Linuxサーバーやプログラミングの現場では、データ整理の基本スキルとして非常に重要です。
まとめ
Linuxの基本コマンドであるsortコマンドは、テキストデータの並び替えだけでなく、重複行の削除という非常に重要な機能を持っています。特にsort -uオプションを活用することで、データの整理と重複排除を同時に実現できるため、初心者から上級者まで幅広く活用されています。テキストファイルの整形やログ解析、データ分析など、さまざまな場面で役立つため、Linuxを扱う上で必ず覚えておきたいコマンドのひとつです。
本記事では、sortコマンドの基本的な使い方から、重複行の削除方法、uniqコマンドとの違い、さらに実務での活用例まで詳しく解説しました。特に重要なのは、sort -uは内部で並び替えを行った後に重複を削除するという仕組みです。この理解があると、なぜ正しく重複が削除されるのかが明確になります。
一方でuniqコマンドは、隣接した同一行のみを対象とするため、事前にsortで並び替えを行う必要があります。この違いを理解することで、適切なコマンド選択ができるようになります。Linuxコマンドの使い分けは、効率的な作業に直結するため、しっかりと押さえておきましょう。
また、sortコマンドは-nや-rなどのオプションと組み合わせることで、数値順や逆順での重複削除も可能になります。これにより、単純なテキスト処理だけでなく、より高度なデータ処理にも対応できます。例えばログファイルのIPアドレス整理や、数値データの重複除去など、実務での応用範囲は非常に広いです。
ファイルへの出力も重要なポイントです。リダイレクトを使うことで、元のデータを保持したまま新しいファイルに結果を保存できます。安全にデータを扱うためにも、この方法は積極的に活用しましょう。
Linux初心者の方は、まずは簡単なテキストファイルを用意し、sortコマンドを実際に実行してみることをおすすめします。コマンドライン操作は、実際に手を動かすことで理解が深まります。繰り返し使うことで、自然と使いこなせるようになります。
sortコマンドによる重複行削除は、Linuxのテキスト処理の基本でありながら、非常に実用性の高い技術です。今後の学習では、grepやawk、sedなどの他のコマンドと組み合わせることで、さらに高度なデータ処理が可能になります。基礎をしっかり身につけて、応用へとつなげていきましょう。
サンプルプログラムで復習
ここで、実際のコマンドを使って重複削除の流れを復習してみましょう。
cat sample.txt
apple
banana
apple
grape
banana
sort -u sample.txt
apple
banana
grape
上記のように、sort -uを使うことで簡単に重複行を削除できます。シンプルですが非常に強力な機能です。
さらにファイルに保存する場合は次のようにします。
sort -u sample.txt > result.txt
このようにすることで、結果を別ファイルに安全に保存できます。元のデータを壊さないという点でも重要なテクニックです。
生徒
「sortコマンドって並び替えだけじゃなくて、重複削除もできるんですね。とても便利だと思いました。」
先生
「そうですね。特にsort -uは現場でもよく使われる重要なコマンドです。データ整理の基本として覚えておきましょう。」
生徒
「uniqコマンドとの違いも理解できました。並び替えが必要かどうかで使い分けるんですね。」
先生
「その通りです。Linuxではコマンドを組み合わせることで、より強力な処理ができます。」
生徒
「ログファイルの整理やデータ分析にも使えると聞いて、実務でも役立ちそうだと感じました。」
先生
「はい。今回学んだ内容は、Linuxの基本でありながら応用範囲が広いので、ぜひ繰り返し使って身につけてください。」
生徒
「これからはsortコマンドを積極的に使って、テキスト処理に慣れていきます。」
先生
「とても良いですね。基礎をしっかり理解すれば、Linux操作がどんどん楽しくなりますよ。」