uniq は隣り合った同じ行を1つにまとめるコマンドです。`sort` と組にする理由、件数を出す `-c`、重複だけを見る `-d` の使い方を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
uniq [オプション] ファイル
隣り合った同じ行を1つにまとめます。
同じエラーが続けて出ているログです。
$ cat logs/errors.log
ERROR connection refused
ERROR connection refused
ERROR connection refused
WARN slow query
ERROR timeout
ERROR timeout
uniq に渡すと、続いている重複が1行にまとまります。
$ uniq logs/errors.log
ERROR connection refused
WARN slow query
ERROR timeout
何回続いたのかを知りたいときは -c です。
$ uniq -c logs/errors.log
3 ERROR connection refused
1 WARN slow query
2 ERROR timeout
同じエラーが3回続いた、と読めます。
ここが uniq のいちばんのつまずきどころです。
$ cat emails.txt
ada@example.com
linus@example.com
ada@example.com
grace@example.com
linus@example.com
ada@example.com
$ uniq emails.txt
ada@example.com
linus@example.com
ada@example.com
grace@example.com
linus@example.com
ada@example.com
1行も減っていません。
同じ行が隣り合っていないからです。
先に sort で並べてから渡します。
$ sort emails.txt | uniq
ada@example.com
grace@example.com
linus@example.com
uniq を使うときは、ほぼ必ず sort とセットになります。
$ sort emails.txt | uniq -c
3 ada@example.com
1 grace@example.com
2 linus@example.com
$ sort emails.txt | uniq -c | sort -nr
3 ada@example.com
2 linus@example.com
1 grace@example.com
この3段(並べる・数える・数で並べ直す)は、ログ調査の定番です。
$ cut -d' ' -f1 logs/access.log | sort | uniq -c | sort -nr
3 200
2 404
1 500
-d は2回以上出てきた行だけを出します。
$ sort emails.txt | uniq -d
ada@example.com
linus@example.com
-u は1回しか出てこなかった行だけです。
$ sort emails.txt | uniq -u
grace@example.com
重複の登録を洗い出すなら -d、取りこぼしを探すなら -u が向いています。
uniq は、同じものが何回出たかを知りたいときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| 多い順に集計する | sort access.log | uniq -c | sort -nr |
| 重複した登録を洗い出す | sort emails.txt | uniq -d |
| 1件しかないものを探す | sort emails.txt | uniq -u |
| 続いている同じエラーの回数を見る | uniq -c errors.log |
| 重複を消すだけ | sort -u emails.txt |
sort を忘れると何も起きません。
uniq は隣り合った行しか見ません。
「消えない」と感じたら、まず sort を前に付けてください。
消すだけなら sort -u で足ります。
$ sort -u emails.txt
ada@example.com
grace@example.com
linus@example.com
uniq を挟む価値は -c と -d にあります。
ディレクトリは渡せません。
$ uniq logs
uniq: logs: Is a directory
ファイルが無いときは、そう言われます。
$ uniq nothing.txt
uniq: nothing.txt: No such file or directorywebterm.appこのサイト
ターミナル基礎
よく使うコマンドを学ぶ
learn.webterm.app別のサイト
