Unix :: コマンド / uniq

コマンド説明
uniqファイル内の重複行の報告または、フィルタ出力
オプション説明
-f N比較する時に、各入力行の先頭から N 個のフィールドを無視します。最初のフィールドを 1 として数えます
-u重複していない行を抽出する
-d重複している行のみ抽出する
-c行が入力中に続けて出現した回数を表示し、空白一つあけてその行の内容を表示します


[重要]
uniq を実行する前に必ず sort を実行しておきます。でないと正しい結果を得られません
実行例) % some command | sort | uniq …


1)以下のような「hoge.txt」があるとして、uniq コマンドをいろいろ試してみます。

% less hoge.txt
aaa
aaa
bbb
ccc
bbb
aaa
% sort hoge.txt | uniq
aaa
bbb
ccc
% sort hoge.txt | uniq -u
ccc
% sort hoge.txt | uniq -d
aaa
bbb
% sort hoge.txt | uniq -c
      3 aaa
      2 bbb
      1 ccc


2)次に以下のような「hoge2.txt」があるとして、uniq コマンドをいろいろ試してみます。

% less hoge2.txt
0 aaa
1 aaa
2 bbb
3 ccc
4 bbb
5 aaa
% sort -k2,2 hoge2.txt | uniq -f1
0 aaa
2 bbb
3 ccc
% sort -k2,2 hoge2.txt | uniq -f1 -u
3 ccc
% sort -k2,2 hoge2.txt | uniq -f1 -d
0 aaa
2 bbb
% sort -k2,2 hoge2.txt | uniq -f1 -c
      3 0 aaa
      2 2 bbb
      1 3 ccc

※. 「sort -k2,2」については Unix::コマンド/sort を参照。