
Linuxでは、ログファイルや大量データの整形作業を行う際に、「重複行を削除したい」というニーズが多く発生します。特に、アクセスログ・CSVデータ・設定ファイルなどで重複行が混在していると、正確な分析や集計ができなくなります。
本記事では、sort
、uniq
などの定番コマンドを使って、重複行を削除するための方法を丁寧に解説します。それぞれのコマンドの特徴や使いどころ、応用例もあわせて紹介するので、業務でデータを扱う方にも役立つ内容です。
記事のポイント
- Linuxで重複行を削除するには、
sort
とuniq
の組み合わせが基本。uniq
は隣接する重複のみ処理するため、事前のソートが重要。
uniq -c
,-d
,-u
で重複の分析や抽出が可能。
Linuxで重複行を削除する(sort+uniqコマンド)
Linuxで重複行を削除する際によく使われるのが、sort
とuniq
コマンドです。これらはどのディストリビューションにも標準で搭載されており、シェルスクリプトからも簡単に利用できます。これらを理解することで、ExcelやPythonスクリプトを使わなくても、端末上で簡単にデータクレンジングを行えるようになります。
sort
:ファイルをソート(並び替え)するコマンド。文字コード順や数値順など、さまざまな基準で並び替え可能。uniq
:連続して現れる重複行を削除、または分析するためのコマンド。
この2つを組み合わせることで、シンプルながら非常に強力な重複行削除が実現できます。例えば、ログファイルの中で同じリクエストURLを1回だけ残したい場合などに便利です。
sort
とuniq
を組み合わせた基本的な削除方法
最も基本的かつ確実な方法が、以下のようにsort
とuniq
を組み合わせる方法です。
sort ファイル名.txt | uniq > 出力ファイル名.txt
このコマンドは、ファイルの内容をソートしたうえで、uniq
で隣接する重複行を削除します。uniq
単体では隣接していない重複を認識できないため、事前のソートが必要です。
例として、以下のようなファイルを考えます。
applebananaappleorangebananaApple
この場合、
sort sample.txt | uniq > result.txt
を実行すると、result.txt
には以下の結果が出力されます。
Appleapplebananaorange
ファイル内の重複行を簡単に取り除けることがわかります。また、sort -u
を使えば、uniq
を省略して同じ結果を得ることもできます。
sort -u sample.txt > result.txt
uniq
コマンドの詳細と重複行の分析
uniq
は単なる重複削除ツールではなく、重複の「可視化」や「分析」にも利用できます。以下に代表的なオプションを紹介します。
-
行の出現回数を表示する:
実行コマンド例 sort sample.txt | uniq -c出力例:
1 Apple2 apple2 banana1 orange行の左側に出現回数が表示されるため、どのデータが重複しているかを一目で把握できます。
-
重複している行のみ出力:
実行コマンド例 sort sample.txt | uniq -d出力例:
applebanana同じ内容が2回以上現れる行だけを抽出します。
-
一度しか登場しない行のみ出力:
実行コマンド例 sort sample.txt | uniq -u出力例:
Appleorange重複していないユニークなデータだけを抽出する際に有用です。
-
大文字・小文字を区別しない比較:
実行コマンド sort -f sample.txt | uniq -i出力例:
Applebananaorange文字列の大小区別を無視して処理するため、
Apple
とapple
を同一視して扱います。
こうしたオプションを組み合わせると、単なる削除ではなく「重複データの検出」や「集計」も効率的に行えます。
Linux重複行削除まとめ
Linuxで重複行を削除する際は、用途やデータの性質に応じて以下のように使い分けましょう。
- 重複削除:
sort ファイル | uniq
またはsort -u
- 分析・可視化用途:
uniq -c
,uniq -d
,uniq -u
sort
、uniq
はいずれも軽量かつ高速に動作するテキスト処理コマンドです。ログ解析やデータ前処理など、日常的な業務におけるデータ整理を効率化する上で欠かせないツールといえるでしょう。
以上で本記事の解説を終わります。
よいITライフを!