uniq -cオプションの使い方を完全解説!重複回数をカウントするLinuxテキスト処理入門
生徒
「Linuxで同じ行が何回出てきたかを数えたいんですが、どうすればいいですか?」
先生
「それならuniq -cコマンドを使うと、重複した行の回数を簡単に表示できますよ。」
生徒
「コマンドって難しそうで不安です。パソコンをあまり触ったことがなくても大丈夫ですか?」
先生
「大丈夫です。まずは仕組みをイメージで理解してから、ゆっくり使ってみましょう。」
1. uniqコマンドとは?
uniqコマンドは、Linuxで同じ内容の行(重複行)をまとめて処理するためのテキスト処理コマンドです。ログファイルやデータ一覧など、同じ行が何度も出てくるテキストを整理したいときによく使われます。
Windowsでいうと、Excelで同じ行をまとめて数える作業に近いイメージです。ただし、Linuxでは黒い画面(ターミナル)に文字で命令を入力して操作します。
2. -cオプションの役割
-cオプションは、「count(数える)」の頭文字です。uniq -cとすることで、各行が何回連続して出てきたかを数字付きで表示できます。
たとえば、名簿やアクセスログで「同じ名前が何回あるか」「同じIPアドレスが何回出現したか」を知りたいときに便利です。
3. 基本的な使い方
まずは一番シンプルな使い方を見てみましょう。以下は、同じ単語が並んだテキストファイルを処理する例です。
uniq -c sample.txt
3 apple
2 banana
1 orange
左側の数字が出現回数、右側が行の内容です。「appleが3回、bananaが2回」という意味になります。
4. sortと一緒に使う理由
uniqコマンドは、連続した行しか重複として認識しません。そのため、事前にsortコマンドで並び替えるのが基本です。
sort sample.txt | uniq -c
3 apple
2 banana
1 orange
|(パイプ)は、「前のコマンドの結果を次に渡す」という意味です。水道管のようにつながっているイメージで考えると理解しやすいです。
5. よくある使用例:ログ解析
Linuxでは、サーバーのログ解析にもuniq -cがよく使われます。たとえば、アクセス元のIPアドレスを数える場合です。
sort access.log | uniq -c
120 192.168.0.1
45 192.168.0.2
3 192.168.0.3
このように、どのIPから何回アクセスがあったかが一目で分かります。
6. 他のオプションとの組み合わせ
-c以外にも、uniqには便利なオプションがあります。たとえば-dは重複行だけを表示します。
sort sample.txt | uniq -cd
3 apple
2 banana
この例では、1回しか出てこない「orange」は表示されません。
7. uniqと似たコマンドとの違い
uniqは「重複の整理」が目的のコマンドです。一方、wcは「行数や文字数を数える」コマンド、grepは「条件に合う行を探す」コマンドです。
それぞれ役割が違うため、「何を知りたいか」によって使い分けることが大切です。
8. 初心者がつまずきやすいポイント
初心者がよく混乱するのが、「並び替えないと正しく数えられない」という点です。uniq -cがうまく動かないときは、まずsortしているかを確認しましょう。
焦らず、コマンドを一つずつ試すことがLinux操作に慣れる近道です。