スポンサーリンク

uniqコマンドで重複している前後の行を削除

uniqコマンドで重複している前後の行を削除することができます。

例えば、下記のin.txtがあったとします。

$ cat in.txt 
awk
awk
Awk
find
awk
find
grep

uniqコマンドを実行します。

$ uniq in.txt 
awk
Awk
find
awk
find
grep

-iオプションで、大文字小文字の違いを無視することができます。

$ uniq -i in.txt 
awk
find
awk
find
grep

-cオプションで、重複した数を表示できます。

$ uniq -c in.txt 
   2 awk
   1 Awk
   1 find
   1 awk
   1 find
   1 grep

-dオプションで、重複した行のみを表示します。

   
$ uniq -d in.txt 
awk

-uオプションで、重複しなかった行のみを表示します。

$ uniq -u in.txt 
Awk
find
awk
find
grep

スポンサーリンク

sortコマンドとuniqコマンドを組み合わせて、重複行を削除

uniqコマンドは、重複している前後の行のみをを削除することに注意が必要です。
ファイル全体の重複行を削除するには、sortコマンドとuniqコマンドを組み合わせるの有効です。

参考:sortコマンドで複数列を指定してソートする

sortコマンドでソートしてから、uniqコマンドをつなぐとファイル全体の重複行を削除できます。

$ sort in.txt | uniq
Awk
awk
find
grep

フィールド(列)を指定して重複行を削除

-fオプションで、フィールド(列)を指定して重複行を削除できます。

例えば、下記のin2.txtがあったとします。

$ cat in2.txt 
awk 1
awk 2
Awk 3
find 3
awk 3
find 4
grep 5

0オリジンなので、2列目を指定して重複行を削除する場合には、
-f1と指定します。

$ uniq -f1 in2.txt 
awk 1
awk 2
Awk 3
find 4
grep 5

スポンサーリンク