uniq
uniqコマンドは、指定したファイル内(または標準入力)の連続する同じ行を1行だけ表示するコマンドです。
以下のようなファイルがあるとします。

test1
test2
test3
test1
test1
test1
uniqコマンドを実行
では、このファイルに対してuniqコマンドを実行します。

$ uniq sam.txt
test1
test2
test3
test1
すると、ファイルの連続する行test1の重複が取り除かれて表示されているのがわかります。
1行目と4行目にtest1があります。これも重複はしてますが連続している行ではないため取り除かれません。

重複行を省く
先ほどの結果ではtest1が重複して表示されていました。
この重複を省くには-uオプションを使用します。

$ uniq -u sam.txt
test1
test2
test3
もしくは以下のようにsortコマンドと併用してuniqコマンドを実行しても同じ結果となります。

$ sort sam.txt | uniq
test1
test2
test3
同じ行数をカウントする
uniqコマンドでは-cオプションを使用して同じ行を集計することが出来ます。
但しこの場合も連続する同一行の集計になります。
以下の実行例を見てください。

$ uniq -c sam.txt
      1 test1
      1 test2
      1 test3
      3 test1
左側の数値が集計になります。スペースを挟んで行が表示されます。
連続する同一行ではなく、テキストファイルの同一行を集計したい場合、ソートしてからuniq -cコマンドを実行します。

$ sort sam.txt | uniq -c
      4 test1
      1 test2
      1 test3
出力結果の表示形式を変更したい場合はawk等を使用すると便利です。

$ sort sam.txt | uniq -c | awk 'BEGIN { FS=" " } { print $2 "=" $1}'
test1=4
test2=1
test3=1

Back to top

Information