ファイル内の重複した行を削除する「uniqコマンド」
Contents
uniqコマンドで重複した行を削除・表示する
Linuxのuniqコマンドを利用すると、重複した行を削除したり、重複している行のみ表示できます。
uniq コマンドではオプションなしでは、重複している行を削除できますが「ソート」しないと重複行を削除できません。
下記のようにフルーツ名を入力したファイルがあります
$ cat fruits.txt melon strawberry cherry melon apple pear banana cherry pineapple cherry melon
uniqコマンドで使ってみますが、ソートしてないので重複行が削除されなません
$ uniq fruits.txt melon strawberry cherry melon apple pear banana cherry pineapple cherry melon
「sort 」コマンドを通してから、「uniq」コマンドを実行してみると、きちんと重複行が削除され表示されます
$ sort fruits.txt | uniq apple banana cherry melon pear pineapple strawberry
ファイルをソートする
下記のように、sort [ ファイル名 ]でソートしてからパイプで繋いで「uniq」に繋げればソートされ重複行が削除されます
書式:sort [ ファイル名 ] | uniq
また、下記のように sort [ファイル名]を実行してからその結果をファイルに書き出してソート済みのファイルとしてもソートできます
$ sort fruits.txt > fruits_sort.txt $ cat fruits_sort.txt apple banana cherry cherry cherry melon melon melon pear pineapple strawberry
重複行のみ出力する
uniq -d [ファイル名] と「-d」のオプションを使用すると、重複している行のみ出力できます
$ uniq -d fruits_sort.txt cherry melon
重複していない行のみ出力する
uniq -u [ファイル名] と「-u」のオプションを使用すると、重複していない行のみ出力できます
$ uniq -u fruits_sort.txt apple banana pear pineapple strawberry
大文字・小文字を無視して重複行を削除する
大文字・小文字を区別しないで、重複行が削除する場合は「-i」のオプションを利用します。
但しこの場合もソート時に大文字・小文字を区別しないでソートする必要があります。その場合は、sort -f [ファイル名] と「-f」のオプションを使用します
$ cat fruits2.txt banana strawberry Banana kiwi fruit strawberry kiwi fruit Kiwi Fruit strawberry # 大文字・小文字を区別しないで重複行を削除する場合 $ sort -f fruits2.txt | uniq -i Banana Kiwi Fruit strawberry
ディスカッション
コメント一覧
まだ、コメントがありません