uniq -dオプションの使い方を完全ガイド!重複している行だけを表示するLinuxテキスト処理入門
生徒
「Linuxで同じ行が何回も出てくるデータを整理したいんですが、どうすればいいですか?」
先生
「その場合はuniqコマンドが便利ですよ。特に-dオプションを使うと重複している行だけを表示できます。」
生徒
「コマンドって難しそうです。パソコンをあまり触ったことがなくても大丈夫ですか?」
先生
「大丈夫です。紙の名簿をチェックする感覚で考えると、とても分かりやすいですよ。」
1. uniqコマンドとは?
uniqコマンドは、Linuxでテキストデータの行を比較して重複を見つけるための基本コマンドです。ログファイル、名簿データ、一覧表など、同じ行が何度も出てくる場面で活躍します。
Windowsでいうと、Excelで「同じ行を探す」作業に近いイメージです。ただし、uniqはターミナル(黒い画面)で文字だけの命令として実行します。その分、大量のデータでも一瞬で処理できるのが特徴です。
2. uniq -dオプションの役割
-dオプションは、「重複している行だけを表示する」ための指定です。ここでいう重複とは、同じ内容の行が2回以上連続して並んでいる状態を指します。
たとえば、出席簿で同じ名前が続けて書かれていたら「おかしいな」と気づきますよね。uniq -dは、その「おかしい部分」だけを抜き出して見せてくれる道具です。
3. uniqを使う前に知っておく大事なポイント
uniqコマンドには、とても重要な前提があります。それは同じ行が連続していないと重複として判定されないという点です。
つまり、バラバラの順番で同じ行が出てくる場合、そのままでは見つけられません。そのため、実際の現場ではsortコマンドと組み合わせて使うことがほとんどです。sortは行を並び替えるコマンドで、五十音順やアルファベット順に整理する役割があります。
4. 基本例:重複行だけを表示する
まずは、シンプルなテキストファイルを例に見てみましょう。data.txtというファイルに、同じ行が続いている状態を想定します。
uniq -d data.txt
apple
orange
この結果は、「apple」と「orange」が2回以上続けて書かれていたことを意味します。1回しか出てこない行は表示されません。
5. sortと組み合わせて使う実践例
次は、順番がバラバラなデータを扱う場合です。このときは、sortとパイプ(|)を使います。パイプは「前の結果を次に渡す」という意味の記号です。
sort data.txt | uniq -d
apple
orange
この方法なら、同じ行が離れていても問題ありません。まず並び替えてから重複チェックをするので、実務で最もよく使われる形です。
6. uniq -d と -c を組み合わせる
重複している行が「何回」出てきたのかも知りたい場合は、-cオプションを組み合わせます。-cは行の出現回数を表示する指定です。
sort data.txt | uniq -cd
2 apple
3 orange
左側の数字が出現回数です。これを見ることで、「どの行が、どれくらい重複しているか」が一目で分かります。
7. uniq -dが役立つ具体的な場面
uniq -dは、ログ解析、ユーザー一覧の確認、アクセス履歴のチェックなど、同じ情報が重なっていないか確認したい場面でよく使われます。
たとえば、ユーザー名の一覧から重複登録を見つけたり、同じエラーが何度も出ていないかを確認したりする用途があります。目で探すと大変な作業を、一瞬で終わらせてくれるのがLinuxコマンドの強みです。
8. uniq -dと似たコマンドとの違い
uniqは「重複を見つける」ことに特化したコマンドです。一方で、grepは「文字を探す」ためのコマンド、sortは「並び替える」ためのコマンドです。
それぞれ役割が違うので、組み合わせて使うことで初めて力を発揮します。uniq -dは、その中でも重複チェック専用の便利な道具だと覚えておくと理解しやすくなります。