【Linux】テキストファイルの重複行を削除する方法

【Linux】テキストファイルの重複行を削除する方法

記事の文字数:1729

本記事では、Linuxでテキストファイルの重複行を削除するための代表的な方法を解説します。sortとuniqを組み合わせた基本的な手法を紹介。さらに、重複行の分析に役立つコマンドも取り上げます。

Linuxでは、ログファイルや大量データの整形作業を行う際に、「重複行を削除したい」というニーズが多く発生します。特に、アクセスログ・CSVデータ・設定ファイルなどで重複行が混在していると、正確な分析や集計ができなくなります。

本記事では、sortuniqなどの定番コマンドを使って、重複行を削除するための方法を丁寧に解説します。それぞれのコマンドの特徴や使いどころ、応用例もあわせて紹介するので、業務でデータを扱う方にも役立つ内容です。

記事のポイント

  • Linuxで重複行を削除するには、sortuniqの組み合わせが基本。
  • uniqは隣接する重複のみ処理するため、事前のソートが重要。
  • uniq -c, -d, -uで重複の分析や抽出が可能。

Linuxで重複行を削除する(sort+uniqコマンド)

Linuxで重複行を削除する際によく使われるのが、sortuniqコマンドです。これらはどのディストリビューションにも標準で搭載されており、シェルスクリプトからも簡単に利用できます。これらを理解することで、ExcelやPythonスクリプトを使わなくても、端末上で簡単にデータクレンジングを行えるようになります。

  • sort:ファイルをソート(並び替え)するコマンド。文字コード順や数値順など、さまざまな基準で並び替え可能。
  • uniq:連続して現れる重複行を削除、または分析するためのコマンド。

この2つを組み合わせることで、シンプルながら非常に強力な重複行削除が実現できます。例えば、ログファイルの中で同じリクエストURLを1回だけ残したい場合などに便利です。

sortuniqを組み合わせた基本的な削除方法

最も基本的かつ確実な方法が、以下のようにsortuniqを組み合わせる方法です。

コマンド構文
sort ファイル名.txt | uniq > 出力ファイル名.txt

このコマンドは、ファイルの内容をソートしたうえで、uniqで隣接する重複行を削除します。uniq単体では隣接していない重複を認識できないため、事前のソートが必要です。

例として、以下のようなファイルを考えます。

apple
banana
apple
orange
banana
Apple

この場合、

実行コマンド例
sort sample.txt | uniq > result.txt

を実行すると、result.txtには以下の結果が出力されます。

Apple
apple
banana
orange

ファイル内の重複行を簡単に取り除けることがわかります。また、sort -uを使えば、uniqを省略して同じ結果を得ることもできます。

実行コマンド例
sort -u sample.txt > result.txt

uniqコマンドの詳細と重複行の分析

uniqは単なる重複削除ツールではなく、重複の「可視化」や「分析」にも利用できます。以下に代表的なオプションを紹介します。

  • 行の出現回数を表示する

    実行コマンド例
    sort sample.txt | uniq -c

    出力例:

    1 Apple
    2 apple
    2 banana
    1 orange

    行の左側に出現回数が表示されるため、どのデータが重複しているかを一目で把握できます。

  • 重複している行のみ出力

    実行コマンド例
    sort sample.txt | uniq -d

    出力例:

    apple
    banana

    同じ内容が2回以上現れる行だけを抽出します。

  • 一度しか登場しない行のみ出力

    実行コマンド例
    sort sample.txt | uniq -u

    出力例:

    Apple
    orange

    重複していないユニークなデータだけを抽出する際に有用です。

  • 大文字・小文字を区別しない比較

    実行コマンド
    sort -f sample.txt | uniq -i

    出力例:

    Apple
    banana
    orange

    文字列の大小区別を無視して処理するため、Appleappleを同一視して扱います。

こうしたオプションを組み合わせると、単なる削除ではなく「重複データの検出」や「集計」も効率的に行えます。

Linux重複行削除まとめ

Linuxで重複行を削除する際は、用途やデータの性質に応じて以下のように使い分けましょう。

  • 重複削除sort ファイル | uniq または sort -u
  • 分析・可視化用途uniq -c, uniq -d, uniq -u

sortuniqはいずれも軽量かつ高速に動作するテキスト処理コマンドです。ログ解析やデータ前処理など、日常的な業務におけるデータ整理を効率化する上で欠かせないツールといえるでしょう。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top