Bash

Linux – uniqコマンドの使い方 – テキストファイルの重複行の表示・削除

uniqコマンドは、テキストファイル内の連続する重複行を処理するために使用されます。

基本的な使い方は、uniq [オプション] [入力ファイル]です。

重複行を削除するにはuniq、重複行を表示するにはuniq -d、重複行以外を表示するにはuniq -uを使用します。

事前にsortコマンドで行をソートすることで、非連続の重複行も処理可能です。

uniqコマンドとは

uniqコマンドは、LinuxやUnix系のオペレーティングシステムで使用されるコマンドの一つで、テキストファイル内の重複行を処理するために使われます。

このコマンドは、連続している重複行を削除したり、重複行の数を表示したりすることができます。

主に、データの整理や分析を行う際に非常に便利です。

主な機能

  • 重複行の削除
  • 重複行のカウント
  • ソートされたデータの処理

例えば、以下のようなテキストファイル sample.txt があるとします。

apple
banana
banana
orange
apple

このファイルに対して uniq コマンドを使用すると、重複した行を削除した結果を得ることができます。

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

uniqコマンドは、基本的にテキストファイルの重複行を処理するために使用されます。

以下に、基本的な使い方を示します。

基本的な構文

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

例1: 重複行の削除

テキストファイル sample.txt の重複行を削除する基本的なコマンドは次の通りです。

uniq sample.txt
apple
banana
orange

例2: 重複行をカウントして表示

重複行の数をカウントして表示するには、-c オプションを使用します。

uniq -c sample.txt
2 apple
2 banana
1 orange

例3: ソートされたデータに対する使用

uniqコマンドは、連続する重複行に対してのみ機能するため、通常は sort コマンドと組み合わせて使用します。

以下のように、まずデータをソートしてから uniq を適用します。

sort sample.txt | uniq
apple
banana
orange

このように、uniqコマンドは非常にシンプルでありながら、データの整理に役立つ強力なツールです。

uniqコマンドのオプション一覧

uniqコマンドには、さまざまなオプションが用意されており、用途に応じて使い分けることができます。

以下に、主なオプションを表形式でまとめました。

オプション説明
-c各行の重複回数をカウントして表示する
-d重複している行のみを表示する
-u重複していない行のみを表示する
-i大文字と小文字を区別せずに比較する
-s N各行の先頭からN文字をスキップして比較
-w N各行の先頭からN文字を比較する

オプションの使用例

  • 重複回数をカウントする:
uniq -c sample.txt
2 apple
2 banana
1 orange
  • 重複行のみを表示する:
uniq -d sample.txt
banana
  • 重複していない行のみを表示する:
uniq -u sample.txt
orange

これらのオプションを組み合わせることで、より柔軟にデータを処理することが可能です。

uniqコマンドとsortコマンドの組み合わせ

uniqコマンドは、連続する重複行を処理するためのコマンドですが、通常は sort コマンドと組み合わせて使用することで、より効果的にデータを整理できます。

以下に、sortコマンドとの組み合わせの方法とその利点を説明します。

基本的な組み合わせ

  1. データをソートしてから重複行を削除する:
sort sample.txt | uniq

このコマンドは、まず sample.txt の内容をソートし、その後に重複行を削除します。

apple
banana
orange

例: ソートと重複行のカウント

  1. ソートしたデータの重複行をカウントする:
   sort sample.txt | uniq -c

このコマンドは、ソートした後に各行の重複回数をカウントして表示します。

2 apple
2 banana
1 orange

例: 大文字小文字を無視して重複行を削除

  1. 大文字小文字を無視して重複行を削除する:
sort -f sample.txt | uniq -i

-fオプションで大文字小文字を無視してソートし、-iオプションで重複行を削除します。

apple
banana
orange

利点

  • データの整理: sortコマンドを使用することで、データが整然と並び、重複行の処理が容易になります。
  • 柔軟性: sortuniqの組み合わせにより、さまざまな条件でデータを処理できるため、分析やレポート作成に役立ちます。

このように、uniqコマンドとsortコマンドを組み合わせることで、データの整理や分析がより効率的に行えるようになります。

uniqコマンドの実践例

uniqコマンドは、さまざまなシナリオで役立ちます。

ここでは、実際の使用例をいくつか紹介します。

これにより、uniqコマンドの実用性を理解しやすくなります。

例1: 簡単な重複行の削除

テキストファイル fruits.txt に以下の内容があるとします。

apple
banana
banana
orange
apple
grape
grape

重複行を削除するには、次のコマンドを使用します。

uniq fruits.txt
apple
banana
orange
grape

例2: 重複行のカウント

同じファイル fruits.txt から、各行の重複回数をカウントして表示するには、次のコマンドを使用します。

uniq -c fruits.txt
2 apple
2 banana
1 orange
2 grape

例3: ソートされたデータの重複行の削除

ファイル numbers.txt に以下の内容があるとします。

3
1
2
2
3
1
4

重複行を削除するために、まずソートしてから uniq を使用します。

sort numbers.txt | uniq
1
2
3
4

例4: 大文字小文字を無視した重複行の削除

ファイル case_sensitive.txt に以下の内容があるとします。

Apple
banana
Banana
orange
apple

大文字小文字を無視して重複行を削除するには、次のコマンドを使用します。

sort -f case_sensitive.txt | uniq -i
apple
banana
orange

例5: 特定の文字数をスキップして重複行を削除

ファイル data.txt に以下の内容があるとします。

123 apple
456 banana
456 banana
789 orange
123 apple

各行の先頭から3文字をスキップして重複行を削除するには、次のコマンドを使用します。

uniq -s 3 data.txt
123 apple
456 banana
789 orange

これらの実践例を通じて、uniqコマンドの多様な使い方を理解し、データの整理や分析に役立てることができます。

uniqコマンドの注意点

uniqコマンドを使用する際には、いくつかの注意点があります。

これらを理解しておくことで、より効果的にコマンドを活用できるようになります。

以下に主な注意点をまとめました。

1. 連続する重複行のみを処理

  • uniqコマンドは、連続している重複行に対してのみ機能します。

したがって、ファイル内の重複行が非連続の場合、sortコマンドと組み合わせて使用する必要があります。

2. ソートの必要性

  • 重複行を削除する前に、データをソートすることが一般的です。

ソートを行わないと、意図した結果が得られない場合があります。

3. 大文字小文字の区別

  • デフォルトでは、uniqコマンドは大文字と小文字を区別します。

大文字小文字を無視して重複行を処理したい場合は、-iオプションを使用する必要があります。

4. 空行の扱い

  • uniqコマンドは、空行も重複行として扱います。

空行を削除したい場合は、別途処理が必要です。

5. 入力ファイルの指定

  • uniqコマンドは、標準入力からもデータを受け取ることができますが、ファイルを指定する場合は、正しいファイルパスを指定することが重要です。

6. 出力のリダイレクト

  • uniqコマンドの出力をファイルにリダイレクトすることができますが、既存のファイルに上書きされるため、注意が必要です。

出力を新しいファイルに保存する場合は、適切なファイル名を指定してください。

7. オプションの組み合わせ

  • uniqコマンドのオプションは組み合わせて使用できますが、意図しない結果を避けるために、各オプションの動作を理解しておくことが重要です。

これらの注意点を考慮することで、uniqコマンドをより効果的に活用し、データの整理や分析をスムーズに行うことができます。

まとめ

この記事では、uniqコマンドの基本的な使い方やオプション、他のコマンドとの組み合わせ方法、実践例、注意点について詳しく解説しました。

これにより、データの重複行を効率的に処理するための手法を身につけることができるでしょう。

今後は、実際のデータ整理や分析の場面で、uniqコマンドを積極的に活用してみてください。

関連記事

Back to top button