はじめに
こんにちは!今回はuniqコマンドについて解説します。
uniqは、連続する重複行を削除・検出するコマンドです。ログファイルの集計やデータのクリーニングに使います。sortとセットで使うことが多いコマンドです。
uniqコマンドとは
uniqは、連続する同じ行を1つにまとめるコマンドです。
重要なポイントは「連続する」という点。非連続の重複は検出できないので、通常はsortしてからuniqを使います。また、重複をカウントしたり、重複行だけ抽出したりもできます。
基本構文
|
|
主なオプション
| オプション | 説明 |
|---|---|
-c |
各行の出現回数をカウント |
-d |
重複している行のみ表示 |
-u |
重複していない(一意な)行のみ表示 |
-i |
大文字小文字を区別しない |
-f N |
最初のN個のフィールドをスキップ |
-s N |
最初のN文字をスキップ |
-w N |
最初のN文字のみ比較 |
使用例
例1: 基本的な重複削除
|
|
実行結果:
|
|
連続する重複行が削除されます。
例2: sortと組み合わせて全重複を削除
|
|
実行結果:
|
|
sortしてからuniqを使うと、すべての重複が削除されます。
例3: 重複回数をカウント
|
|
実行結果:
|
|
各行が何回出現したかカウントされます。
例4: 重複行のみ表示
|
|
実行結果:
|
|
2回以上出現した行だけ表示されます。
例5: 一意な行(重複していない行)のみ表示
|
|
実行結果:
|
|
1回だけ出現した行のみ表示されます。
例6: 大文字小文字を区別しない
|
|
実行結果:
|
|
大文字小文字を無視して重複判定します。
例7: 特定のフィールドをスキップ
|
|
実行結果:
|
|
最初の1フィールド(日付)をスキップして、残りで重複判定。
例8: 最初の数文字をスキップ
|
|
実行結果:
|
|
最初の6文字(“ID001:“部分)をスキップして比較。
例9: 最初の数文字のみで比較
|
|
実行結果:
|
|
最初の2文字のみで重複判定。
例10: 結果をファイルに保存
|
|
または
|
|
実践的な使い方
ログファイルから一意なエラーメッセージを抽出
|
|
アクセスログから一意なIPアドレスを抽出
|
|
最も多く出現する行トップ10
|
|
よく使うパターンです。出現回数でソートしてトップ10を表示。
重複行のみ抽出してカウント
|
|
重複している行だけを、出現回数の多い順に表示。
2回以上出現する行を検出
|
|
ユニークな値の数をカウント
|
|
何種類の異なる行があるかカウント。
メールアドレスのドメインを集計
|
|
どのドメインが多いか集計。
ログファイルから重複エラーを除外
|
|
CSVファイルの特定列の重複チェック
|
|
2列目に重複がある行を検出。
コマンド履歴から頻出コマンドを抽出
|
|
よく使うコマンドトップ10。
Tips・注意点
-
必ずsortしてから使う: uniqは連続する重複しか削除できない
1 2 3 4 5# 間違い(非連続の重複は残る) uniq unsorted.txt # 正しい sort unsorted.txt | uniq -
sortの-uとuniqの違い: 基本的には同じだが、uniqの方が機能が多い
1 2sort -u file.txt # 重複削除のみ sort file.txt | uniq -c # カウントもできる -
空行も処理される: 連続する空行も1つにまとめられる
1uniq file.txt -
フィールド区切りはスペース: デフォルトの区切り文字はスペース/タブ
1uniq -f 2 # スペース区切りで3列目以降を比較 -
-cの出力形式: 左揃えで数値、その後にスペース、行内容
1 2uniq -c file.txt # 出力例: " 5 apple"
sortとuniqの組み合わせパターン
パターン1: 重複削除
|
|
または
|
|
パターン2: 出現回数を数える
|
|
パターン3: 重複行だけ抽出
|
|
パターン4: 出現回数でソート
|
|
パターン5: 一意な行だけ抽出
|
|
uniqとawkの比較
同じことをawkでもできますが、uniqの方がシンプルです。
|
|
シンプルな処理ならuniq、複雑な処理ならawkが向いています。
まとめ
今回はuniqコマンドについて解説しました。
ポイント:
uniqで連続する重複行を削除できる-cで出現回数をカウント-dで重複行のみ、-uで一意な行のみ表示-iで大文字小文字を区別しない- 通常は
sortと組み合わせて使う sort | uniq -c | sort -rnで頻度分析
uniqはsortとセットで使うことで真価を発揮します。ログ解析やデータの集計で頻繁に使うので、sortとの組み合わせパターンを覚えておくと便利です。
次回もLinuxコマンドの学習を続けていきましょう!