このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】重複行を1行にまとめて表示する:uniqコマンド

uniq コマンドの概要

 「uniq」コマンドは、ソートされたファイルや標準入力からのデータを処理し、重複する連続行を1行にまとめて表示するための Linuxコマンドです。このコマンドは、データの重複を排除するために使用されますが、入力データは事前にソートされている必要があります。「uniq」コマンドは、重複行のカウント、重複行の表示、非重複行の表示など、さまざまなオプションを提供します。

【構文】
uniq [オプション] [入力ファイル名] [出力ファイル名]

  • [オプション]: 重複行の処理方法を指定するためのオプション。
  • [入力ファイル名]: 処理対象のファイル。省略すると標準入力から読み取ります。
  • [出力ファイル]: 結果を出力するファイル。省略すると標準出力に表示します。

主なオプションと説明

以下の表に、「uniq」コマンドの主なオプションとその説明をまとめます。

オプション説明
-c各行の出現回数を行頭に表示します。
-d重複行のみを表示します。
-u一度だけ出現する行のみを表示します。
主なオプションと説明

コマンドの使用例と解説

以下に、「uniq」コマンドの具体的な使用例とその出力例を示します。

1.サンプルファイルの作成:example.txt

まず、以下の内容を持つサンプルファイル「example.txt」を作成します。

・「nano example.txt」コマンドを実行します。

nanoエディタを起動して、「example.txt」ファイルを作成します。

user01@ubuntu-vm:~$ nano example.txt

以下の内容を入力します。

apple
banana
apple
orange
banana
banana
grape
apple

入力したら、「Ctrl + S」キーを入力して保存、「Ctrl + X」キーでnanoエディタを終了させます。

2.重複行をまとめて表示

・「sort example.txt | uniq」コマンドを実行します。

sort コマンドでファイルをソートしてから、uniq コマンドで重複行をまとめて表示します。

user01@ubuntu-vm:~$ sort example.txt | uniq
apple
banana
grape
orange

3.重複行の出現回数を表示

・「sort example.txt | uniq -c」コマンドを実行します。

各行の出現回数を行頭に表示します。

user01@ubuntu-vm:~$ sort example.txt | uniq -c
      3 apple
      3 banana
      1 grape
      1 orange

4.重複行のみを表示

・「sort example.txt | uniq -d」コマンドを実行します。

重複する行のみを表示します。

user01@ubuntu-vm:~$ sort example.txt | uniq -d
apple
banan

5.一度だけ出現する行を表示

・「sort example.txt | uniq -u」コマンドを実行します。

一度だけ出現する行のみを表示します。

user01@ubuntu-vm:~$ sort example.txt | uniq -u
grape
orange

6.演習で作成したファイルの削除

演習で使用したファイルを削除します。

・「rm example.txt」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm example.txt
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 この演習を通じて、「uniq」コマンドを使うことで、データの重複を効率的に処理する方法が理解できたかと思います。「uniq」コマンドは、データの整理や重複データの検出・削除に非常に有用です。