uniqコマンドで出現回数を数える方法を徹底解説!Linux初心者でもわかる重複行カウントの基本
生徒
「同じデータが何回出てきたかを数えたいんですが、Linuxでできますか?」
先生
「できますよ。uniqコマンドを使うと、重複している行の出現回数を数えられます。」
生徒
「でも難しそうです。数字を数えるってどうやるんですか?」
先生
「シンプルなオプションを使うだけなので簡単です。順番に見ていきましょう。」
1. uniqコマンドとは?
uniqコマンドは、Linuxで重複している行をまとめたり、出現回数を数えたりするためのコマンドです。
例えば、ログファイルやデータ一覧の中で「同じ内容が何回出てきたか」を知りたいときに便利です。
身近な例でいうと、アンケート結果で「同じ回答が何人いたか」を集計するようなイメージです。
2. 出現回数を数える基本の使い方(-cオプション)
出現回数を数えるには、-cオプションを使います。
uniq -c ファイル名
例として、以下のようなテキストファイルを用意します。
cat sample.txt
apple
apple
banana
banana
banana
orange
このファイルに対して実行すると、次のようになります。
uniq -c sample.txt
2 apple
3 banana
1 orange
左側の数字が「出現回数」です。つまりappleは2回、bananaは3回出てきたという意味になります。
3. 注意点:sortコマンドと一緒に使う理由
uniqコマンドには重要な特徴があります。それは連続している重複しかまとめないという点です。
例えば、順番がバラバラな場合は正しくカウントできません。
cat sample2.txt
apple
banana
apple
banana
banana
uniq -c sample2.txt
1 apple
1 banana
1 apple
2 banana
このように分かれてしまいます。そこで使うのがsortコマンドです。
sort sample2.txt | uniq -c
2 apple
3 banana
sortは「並び替え」を行うコマンドです。同じものをまとめてからuniqに渡すことで、正しくカウントできます。
4. 出現回数順に並び替える方法
カウントした結果を「多い順」や「少ない順」に並び替えたい場合は、さらにsortを組み合わせます。
sort sample.txt | uniq -c | sort -n
1 orange
2 apple
3 banana
-nは数値順で並び替えるオプションです。
多い順にする場合は次のようにします。
sort sample.txt | uniq -c | sort -nr
3 banana
2 apple
1 orange
-rは逆順の意味です。つまり多い順に並びます。
5. よく使うオプションの組み合わせ
uniqコマンドは他のオプションと組み合わせることで、さらに便利になります。
重複している行だけ表示する場合です。
sort sample.txt | uniq -c | grep -v " 1 "
2 apple
3 banana
grepは文字検索コマンドで、「1回しか出ていないもの」を除外しています。
逆に1回だけ出現したものを確認する場合です。
sort sample.txt | uniq -c | grep " 1 "
1 orange
このように組み合わせることで、柔軟にデータ分析ができます。
6. ログ解析での活用例
実際の現場では、ログファイルの分析によく使われます。
例えば、アクセスログの中でどのページが多く見られているかを調べることができます。
cat access.log | sort | uniq -c | sort -nr
50 /index.html
30 /login
10 /contact
このように、どのページが人気なのかが一目で分かります。
7. 初心者がつまずきやすいポイント
初心者の方がよく間違えるポイントは次の2つです。
1つ目は並び替えをしていないことです。
sortを使わないと正しくカウントできません。
2つ目はスペースの見方です。
uniq -cの結果は数字の前に空白が入りますが、これは表示の仕様です。
焦らずに結果をよく確認することが大切です。
8. uniqコマンドで出現回数を数える重要ポイント
uniqコマンドは、Linuxのテキスト処理において非常に重要な基本コマンドです。
特に-cオプションを使うことで、データの傾向や頻度を簡単に把握できます。
さらにsortと組み合わせることで、より正確で実用的な結果が得られます。
コマンドライン操作に慣れていない方でも、今回紹介した例をそのまま試すことで理解が深まります。
まとめ
今回はLinuxの基本コマンドの一つであるuniqコマンドを使って、テキストデータやログファイルの中に含まれる重複行の出現回数を数える方法について詳しく解説しました。uniqコマンドはシンプルな構文でありながら、データ分析やログ解析において非常に強力な役割を果たします。特にuniqコマンドのcオプションを使うことで、同じ内容が何回出現しているのかを簡単に数値として可視化できるため、初心者でも扱いやすい点が大きな特徴です。
また、uniqコマンドを正しく活用するためには、sortコマンドとの組み合わせが重要であることも学びました。uniqは連続した行しかまとめることができないため、事前にsortで並び替えを行うことで、同じデータを一箇所に集めて正確なカウントを実現できます。この流れはLinuxのテキスト処理における基本パターンであり、今後の学習でも頻繁に登場する重要な考え方です。
さらに、sortとuniqを組み合わせたあとに再度sortを行うことで、出現回数の多い順や少ない順に並び替える方法も理解しました。これにより、単に数を数えるだけでなく、どのデータが多く使われているのか、どの値が重要なのかといった傾向分析まで行えるようになります。ログファイル解析やアクセス解析など、実務に近い場面でもすぐに応用できる知識です。
grepコマンドと組み合わせることで、特定の条件に一致するデータだけを抽出する方法も確認しました。例えば一回しか出現していない行だけを表示したり、逆に複数回出現している行だけを抽出することで、データの中から必要な情報を効率よく見つけることができます。このようにLinuxコマンドは単体で使うだけでなく、パイプを使って連携させることで、より高度な処理が可能になります。
実際の現場では、アクセスログやエラーログの分析にuniqコマンドがよく使われます。どのページにアクセスが集中しているのか、どのエラーが頻発しているのかを素早く把握することができるため、システム運用やトラブルシューティングにおいて欠かせないスキルとなります。初心者のうちからこのような基本コマンドの使い方に慣れておくことで、実務でもスムーズに対応できる力が身につきます。
今回紹介した内容は、Linuxコマンドの中でも特に重要な基礎知識にあたります。uniqコマンドの出現回数カウント、sortコマンドによる並び替え、grepによるフィルタリングといった組み合わせは、テキスト処理の基本パターンとしてしっかり覚えておきましょう。繰り返しコマンドを実行して結果を確認することで、自然と理解が深まり、応用力も高まっていきます。
以下に、今回学んだ内容を振り返るための簡単なサンプルをまとめます。実際に手を動かして試すことで、理解がより確実になります。
cat sample.txt
apple
apple
banana
banana
banana
orange
sort sample.txt | uniq -c | sort -nr
3 banana
2 apple
1 orange
このように、Linuxのuniqコマンドとsortコマンドを組み合わせることで、データの出現回数を効率よく集計し、さらに並び替えて見やすく表示することができます。シンプルなコマンドの組み合わせですが、実用性は非常に高く、日々の作業効率を大きく向上させることができます。:contentReference[oaicite:0]{index=0}
生徒
uniqコマンドを使うと同じ行をまとめて数えられるというのがよく分かりました。特にcオプションで回数が表示されるのが便利ですね。
先生
その通りです。ログ解析やデータ集計ではとてもよく使われる基本テクニックです。まずはsortと組み合わせることをしっかり覚えましょう。
生徒
最初はuniqだけでやってしまってうまく数えられなかった理由も理解できました。並び替えが重要なんですね。
先生
はい。Linuxコマンドは単体だけでなく、複数のコマンドをつなげて使うことで力を発揮します。パイプの使い方にも慣れていきましょう。
生徒
さらにsortで並び替えることで多い順や少ない順にできるのも面白かったです。データ分析にも使えそうです。
先生
その視点はとても大切です。コマンドを覚えるだけでなく、どんな場面で使えるかを考えることで理解が深まります。
生徒
これからログファイルでも試してみます。実際に使って慣れていきたいです。
先生
ぜひ実践してください。繰り返し使うことで自然と身につきますし、Linuxの操作にも自信が持てるようになります。