uniqコマンドとsortの組み合わせ完全ガイド!初心者でもわかるLinuxの重複削除とユニーク処理
生徒
「Linuxで同じデータがたくさんあるとき、重複を消す方法ってありますか?」
先生
「ありますよ。uniqコマンドとsortコマンドを組み合わせることで、簡単にユニーク処理ができます。」
生徒
「組み合わせるってどういうことですか?」
先生
「順番に並べてから重複を削除するイメージです。簡単な例で説明していきますね。」
1. uniqコマンドとは?
uniqコマンドは、Linuxで重複した行を削除するためのコマンドです。ログファイルやデータ一覧などで、同じ内容が何度も出てくるときに役立ちます。
ただし重要なポイントがあります。uniqは連続した重複しか削除できません。つまり、同じ内容でも離れていると削除されないという特徴があります。
たとえると、同じ商品が並んでいる棚から重複を取り除くようなものです。バラバラに置かれていると見つけられません。
2. sortコマンドとは?
sortコマンドは、データを並び替えるためのコマンドです。アルファベット順や数値順に整列できます。
uniqと一緒に使うことで、バラバラに存在する同じデータをまとめてから削除できます。
つまり、sortで並べる → uniqで削除という流れが基本になります。
3. uniqだけを使った場合
まずはuniq単体の動きを確認してみましょう。
cat sample.txt
apple
banana
apple
banana
orange
この状態でuniqを使うとどうなるでしょうか。
uniq sample.txt
apple
banana
apple
banana
orange
結果を見ると、何も変わっていません。これは、同じ文字が連続していないためです。この点が初心者がよくつまずくポイントです。
4. sortとuniqを組み合わせる基本
次に、sortと組み合わせてみましょう。
sort sample.txt
apple
apple
banana
banana
orange
sort sample.txt | uniq
apple
banana
orange
パイプ記号は、前のコマンドの結果を次のコマンドに渡す仕組みです。これにより、並び替えた結果をそのままuniqに渡せます。
これがLinuxの基本テクニックであり、テキスト処理の効率化に欠かせません。
5. 出現回数を数える uniq -c
-cオプションを使うと、各行の出現回数を表示できます。
sort sample.txt | uniq -c
2 apple
2 banana
1 orange
これはログ分析やアクセス数の集計などに非常に便利です。
例えば、どのエラーが何回発生したかなどを簡単に確認できます。
6. 重複だけを表示 uniq -d
-dオプションを使うと、重複しているデータだけを表示できます。
sort sample.txt | uniq -d
apple
banana
重複チェックやデータの確認に役立ちます。
例えば、ユーザーIDの重複確認などの場面で使えます。
7. 重複していない行だけ uniq -u
-uオプションを使うと、一度しか出てこない行だけを表示します。
sort sample.txt | uniq -u
orange
これは「一意のデータだけ取り出したい」ときに便利です。
8. sortとuniqの実用例
実際の業務でよくある例を紹介します。
cat access.log | sort | uniq -c | sort -nr
50 /index.html
30 /login
10 /about
この例では、アクセスログを集計して多い順に並べています。
それぞれのコマンドの役割は次の通りです。
- sortで並べる
- uniq -cで数える
- sort -nrで数の多い順に並べる
このように複数コマンドを組み合わせることで、強力なデータ処理ができます。
9. よくある間違いとポイント
初心者がよく間違えるポイントを整理します。
- uniq単体では重複削除できない場合がある
- 必ずsortとセットで使うのが基本
- パイプの使い方を覚えることが重要
特に「sortしてからuniq」という流れは、Linuxのテキスト処理で非常によく使われます。
この考え方を覚えておくと、grepやcutなど他のコマンドとも組み合わせて応用できるようになります。