uniqコマンドの基本!重複行をまとめる方法を初心者向けにわかりやすく解説
生徒
「同じ行がたくさんあるファイルを整理したいんですが、簡単な方法はありますか?」
先生
「ありますよ。Linuxではuniqコマンドを使うと、重複している行をまとめることができます。」
生徒
「重複っていうのは、同じ内容の行のことですか?」
先生
「その通りです。同じ行が連続している場合に、それを一つにまとめて表示してくれます。」
生徒
「難しそうですが、初心者でも使えますか?」
先生
「簡単な例から一緒に見ていけば大丈夫です。順番に理解していきましょう。」
1. uniqコマンドとは
uniqコマンドは、Linuxで重複している行をまとめるためのコマンドです。特にログファイルやデータ一覧などで、同じ内容が繰り返されている場合に便利です。
例えば、同じ商品名や同じユーザー名が何度も出てくるファイルを整理したいときに役立ちます。
ただし重要なポイントとして、連続している重複行しかまとめられないという特徴があります。
2. 基本的な使い方
まずは基本的な使い方から見ていきましょう。
uniq sample.txt
apple
banana
orange
このコマンドは、sample.txtの中にある連続した重複行を一つにまとめて表示します。
ここでいう「連続」とは、同じ行が並んでいる状態のことです。
3. 重複行を削除する具体例
次に実際のデータを使って見てみましょう。
cat sample.txt
apple
apple
banana
banana
orange
uniq sample.txt
apple
banana
orange
このように、同じ行が連続している場合は一つにまとめられます。
イメージとしては、同じ言葉を何回も繰り返している文章を、きれいに整理してくれるような動きです。
4. sortコマンドとの組み合わせが重要
uniqコマンドは単体でも使えますが、より効果的に使うにはsortコマンドと組み合わせるのが基本です。
なぜなら、重複行が離れているとまとめられないからです。
cat sample.txt
banana
apple
banana
apple
uniq sample.txt
banana
apple
banana
apple
この場合、重複していても連続していないのでまとめられません。
sort sample.txt | uniq
apple
banana
sortで並び替えてからuniqを使うことで、正しく重複をまとめることができます。
この組み合わせはLinuxのテキスト処理でとてもよく使われる基本テクニックです。
5. よく使うオプション
uniqには便利なオプションがあります。
-c 重複回数を表示する
sort sample.txt | uniq -c
2 apple
2 banana
それぞれの行が何回出てきたかを確認できます。
-d 重複している行だけ表示する
sort sample.txt | uniq -d
apple
banana
重複しているものだけ知りたいときに便利です。
-u 一度しか出てこない行だけ表示する
sort sample.txt | uniq -u
orange
ユニークなデータだけを抽出したいときに使えます。
6. よくある使い方の例
ログファイルやデータ分析での使い方を見てみましょう。
cat access.log | sort | uniq -c
10 192.168.1.1
5 192.168.1.2
このようにIPアドレスごとのアクセス回数を数えることができます。
初心者の方は「同じものをまとめて数える道具」と覚えると理解しやすいです。
7. uniqコマンドの注意点
uniqを使うときにはいくつか注意点があります。
まず、連続していない重複はまとめられません。そのため、基本的にはsortとセットで使うことが重要です。
また、空白や大文字と小文字の違いも別の行として扱われます。
例えば「Apple」と「apple」は別のデータになります。
8. 他のコマンドとの違い
似たような処理としてsort -uという方法もあります。
sort -u sample.txt
apple
banana
orange
これは並び替えと重複削除を同時に行う方法です。
ただし、重複回数を知りたい場合はuniq -cの方が便利です。
目的によって使い分けることが大切です。