uniqコマンドで重複行を削除する方法|sort連携やカウント・抽出もコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドU-Z, テキスト処理コマンド > uniqコマンドで重複行を削除する方法|sort連携やカウント・抽出もコマンド
「uniqコマンドで重複を消したのに、まだ重複行が残っている」
「ログファイルから出現回数の多いエラーを集計したい」

uniqコマンドは重複行を処理するコマンドですが、「隣接する行しか比較しない」という特性を知らないとハマります。
この記事では、uniqの正しい使い方から、sortとの組み合わせ、ログ集計に使える実践テクニックまで解説します。
【この記事でわかること】
・uniq は「隣接する重複行」だけをまとめるコマンド(事前のsortが必須)
・-c で出現回数カウント、-d で重複行のみ、-u で一意の行のみ抽出できる
・sort | uniq -c | sort -rn がログ集計のゴールデンパターン

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

uniqコマンドとは?

uniqは「unique」の略で、連続する重複行を1行にまとめるコマンドです。

ここで最も重要なポイントがあります。uniqが比較するのは「隣接する行」だけです。離れた位置にある重複行は検出しません。

そのため、ファイル全体の重複を処理するには、事前にsortで並び替えてからuniqに渡すのが鉄則です。

# これだと離れた位置の重複は消えない uniq data.txt # sortで並び替えてからuniqに渡す(正しい使い方) sort data.txt | uniq

基本的な使い方

1. 重複行を除去する(sort | uniq)

最も基本的な使い方です。sortとパイプで組み合わせます。

# 元のファイル cat fruits.txt apple banana apple cherry banana apple # sort | uniqで重複除去 sort fruits.txt | uniq apple banana cherry

2. 重複回数をカウントする(-c)

-c(count)オプションで、各行が何回出現したかを表示します。ログ集計で特に重宝します。

sort fruits.txt | uniq -c 3 apple 2 banana 1 cherry

出現回数の多い順に並べるには、さらにsort -rnをつなげます。

sort fruits.txt | uniq -c | sort -rn 3 apple 2 banana 1 cherry

3. 重複している行だけ表示する(-d)

-d(duplicated)オプションで、2回以上出現する行だけを表示します。

sort fruits.txt | uniq -d apple banana

4. 重複していない行だけ表示する(-u)

-u(unique)オプションで、1回しか出現しない行だけを表示します。

sort fruits.txt | uniq -u cherry

主要オプション

1. 大文字・小文字を区別しない(-i)

-i(ignore-case)オプションで、大文字と小文字を同一視して比較します。

cat mixed.txt Error error ERROR Warning sort mixed.txt | uniq -i Error Warning

2. 先頭のフィールドをスキップする(-f)

-f N(fields)で、先頭からN個のフィールド(スペース/タブ区切り)を無視して比較します。ログのタイムスタンプを無視して比較したい場合に使います。

cat log.txt 2026-03-18 disk full 2026-03-19 disk full 2026-03-20 reboot # 先頭1フィールド(日付)をスキップして比較 uniq -f 1 log.txt 2026-03-18 disk full 2026-03-20 reboot

3. 先頭の文字数をスキップする(-s)

-s N(skip-chars)で、先頭からN文字を無視して比較します。

# 先頭5文字をスキップして比較 uniq -s 5 data.txt

実務で使えるuniqテクニック

1. アクセスログからIPアドレスの出現回数を集計する

Webサーバーのアクセスログから、どのIPアドレスからのアクセスが多いかを調べるワンライナーです。

# Apacheアクセスログ:IPアドレス別アクセス数(上位10件) awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -rn | head -10 523 192.168.1.100 312 10.0.0.50 198 172.16.0.1

不正アクセスの調査や、負荷の原因特定によく使うパターンです。

2. エラーログから頻出エラーを見つける

# エラーメッセージの出現回数を集計 grep "error" /var/log/messages | awk '{$1=$2=$3=""; print}' | sort | uniq -c | sort -rn | head -10

タイムスタンプ部分($1 $2 $3)を除去してからsort | uniq -cすることで、同じエラーメッセージの出現回数を集計できます。

3. sort -u との違い

sort -u でも重複除去はできますが、uniqの方が柔軟です。

sort -u:重複除去だけ。カウントや重複抽出はできない
sort | uniq:-c でカウント、-d で重複抽出、-u でユニーク抽出が可能

単純に重複を消すだけなら sort -u で十分ですが、集計や分析が目的なら sort | uniq を使ってください。

トラブルシュート・エラー対処

「uniqしたのに重複が残る」場合の対処法

uniqで最も多いトラブルです。原因はほぼ確実に「sortしていない」ことです。

# NG: sortせずにuniq(離れた重複が残る) cat data.txt | uniq # OK: sortしてからuniq cat data.txt | sort | uniq

もう1つの原因として、行末に見えない空白やタブが含まれている場合があります。見た目は同じでもuniqは異なる行と判定します。

# 行末の空白を除去してからuniq sed 's/[[:space:]]*$//' data.txt | sort | uniq

本記事のまとめ

やりたいこと コマンド
重複行を除去する sort ファイル名 | uniq
重複回数をカウントする sort ファイル名 | uniq -c
出現回数の多い順に並べる sort ファイル名 | uniq -c | sort -rn
重複している行だけ表示する sort ファイル名 | uniq -d
重複していない行だけ表示する sort ファイル名 | uniq -u
大文字小文字を無視して重複除去する sort ファイル名 | uniq -i
先頭のフィールドを無視して比較する uniq -f N ファイル名

ログ集計やデータ分析を1行で仕上げたい方へ

sort と uniq の組み合わせは、現場の定番ワンライナーです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。