このページで解説している内容は、以下の 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
」コマンドは、データの整理や重複データの検出・削除に非常に有用です。