uniqコマンドで重複行を削除・カウントする方法

先生

Linuxのuniqコマンド?重複行の削除からカウントまで、サクッとマスターしてデータ整理の達人になろう!

uniqコマンドとは?重複行を削除・カウント

LinuxやmacOSなどのUnix系OSで利用できるuniqコマンドは、テキストファイル内の連続する重複行を削除したり、重複回数をカウントしたりする際に非常に便利なツールです。ログファイルの整理、データの集計、設定ファイルの最適化など、さまざまな場面で活用できます。この記事では、uniqコマンドの基本的な使い方から、より高度なオプションまでを解説します。

SEO対策としては、uniqコマンドの基本的な使い方、オプション、具体的な使用例を網羅的に解説することで、検索エンジンのランキング上位表示を目指します。特に、プログラミング初心者やLinuxコマンド初心者にも理解しやすいように、具体的な例を豊富に盛り込みます。

また、記事全体を通して、キーワードを自然な形で使用し、読者の検索意図に合致するコンテンツを提供することを心がけます。

uniqコマンドの基本的な使い方

uniqコマンドの基本的な構文は以下の通りです。

uniq [オプション] [入力ファイル] [出力ファイル]

入力ファイルを指定しない場合は、標準入力から読み込みます。出力ファイルを指定しない場合は、標準出力に出力されます。

最も基本的な使い方は、重複行を削除して表示することです。例えば、data.txtというファイルに以下の内容が記述されているとします。


apple
banana
banana
cherry
cherry
cherry

このファイルに対してuniq data.txtを実行すると、以下の結果が得られます。


apple
banana
cherry

重複する行が削除され、それぞれの行が1回ずつ表示されます。

uniqコマンドの主なオプション

uniqコマンドには、さまざまなオプションが用意されています。ここでは、特に使用頻度の高いオプションを紹介します。

-cオプション:各行の出現回数を表示します。

uniq -c data.txt

上記の例で、data.txtに対して-cオプションを使用すると、以下の結果が得られます。


      1 apple
      2 banana
      3 cherry

各行の先頭に、出現回数が表示されます。

-dオプション:重複している行のみを表示します。

uniq -d data.txt

上記の例で、data.txtに対して-dオプションを使用すると、以下の結果が得られます。


banana
cherry

重複している行(ここではbananacherry)のみが表示されます。

-iオプション:大文字と小文字を区別せずに比較します。


Apple
apple

上記のような内容のファイルに対して、-iオプションなしでuniqを実行すると、Appleappleは異なる行として扱われます。しかし、-iオプションを使用すると、大文字小文字の違いを無視して比較するため、重複行として扱われます。

uniq -i data.txt

-f nオプション:最初のn個のフィールドを無視して比較します。フィールドは空白文字で区切られます。


1 apple red
1 apple green
2 banana yellow

上記のような内容のファイルに対して、-f 1オプションを使用すると、最初のフィールド(ここでは数字)を無視して比較するため、apple redapple greenは重複行として扱われます。

uniq -f 1 data.txt

-s nオプション:最初のn文字を無視して比較します。


 apple
  apple

上記のような内容のファイルに対して、-s 1オプションを使用すると、最初の1文字を無視して比較するため、’ apple’と’ apple’は重複行として扱われます。

uniq -s 1 data.txt

uniqコマンドの実践的な使用例

ログファイルからエラーメッセージの出現回数をカウントする例:

cat error.log | grep 'ERROR' | uniq -c | sort -nr

この例では、error.logファイルからgrepコマンドでERRORを含む行を抽出し、uniq -cで各エラーメッセージの出現回数をカウントし、sort -nrで出現回数の多い順にソートしています。

設定ファイルから重複した設定項目を削除する例:

uniq config.txt > config_new.txt

この例では、config.txtファイルから重複した設定項目を削除し、結果をconfig_new.txtファイルに保存しています。

CSVファイルから特定の列の値の重複を削除する例:

cut -d',' -f2 data.csv | sort | uniq

この例では、data.csvファイルから,区切りで2番目の列を抽出し、sortコマンドでソートしてからuniqコマンドで重複を削除しています。

参考リンク

まとめ

uniqコマンドは、テキストファイル内の重複行を効率的に処理するための強力なツールです。基本的な使い方から、オプションを組み合わせた応用的な使い方までを理解することで、日々の作業効率を大幅に向上させることができます。この記事を参考に、uniqコマンドを使いこなせるようになってください。