uniqコマンドは、テキストファイルの重複した行を出力・削除するコマンドです。sortコマンドと併用することで、便利に使うことができます。
uniqコマンドの使い方
uniqコマンドの書式は以下の通りです。
1 |
uniq [オプション] [入力ファイル [出力ファイル]] |
uniqコマンドは指定した入力ファイル、または標準入力から重複を取り除きます。出力ファイルを指定した場合は、そのファイルに結果が書き込まれます。出力ファイルを指定しなかった場合は、標準出力に出力されます。
オプション
-c | 重複した数を各行の前に出力する |
-d | 重複した行だけを出力する |
-f 行数 | 指定したフィールドだけ比較をスキップする |
-s 文字数 | 指定した文字数だけ比較をスキップする |
-i | 大文字と小文字の違いを無視する |
-u | 重複しない行だけを出力する |
-w 文字数 | 各行で指定した文字数だけ比較を行う |
重複した行を削除する
今回は例として members.txt というファイルを使用します。
1 2 3 4 5 6 7 |
$ cat members.txt teacher teacher student teacher staff staff |
以下は、重複した行を削除し出力する例です。
1 2 3 4 5 |
$ uniq members.txt teacher student teacher staff |
引数で指定したファイルの各行をその前後の行と比較し、重複しない行だけを表示します。
もし離れた行の重複も取り除きたい場合は、sortコマンドで並べ替えてからuniqコマンドを使用します。
1 2 3 4 |
$ sort members.txt | uniq staff student teacher |
重複した行数を出力する
重複した行数を表示するコマンドを実行する場合は、「-c」オプションを指定します。
1 2 3 4 |
$ sort members.txt | uniq -c 2 staff 1 student 3 teacher |
各行の先頭に重複した行数が出力されます。
重複しない行を出力する
重複しない行を表示するコマンドを実行する場合は、「-u」オプションを指定します。
1 2 |
$ sort members.txt | uniq -u student |