【uniq】Linuxコマンド_ファイルデータ内のユニークな行を表示する

テキストファイルのユーニークな行を表示するのは、「uniq」コマンドを使用します。
「uniq」コマンドの意味はユニーク「唯一」となり、同じデータの行は前後に重複してある場合、その中の1行のみを表示します。

あくまでその行の前後なので同じデータが、対象の行の前後以外にある場合は、uniqコマンドにが当せず、表示されます。




↓↓↓ITエンジニアのおすすめ学習・開発環境の詳細へ↓↓↓

「uniq」コマンドの使い方(Linux)

以下のように「kyushu.txt」というファイルがあります。

$ cat kyushu.txt 
fukuoka
fukuoka
saga
nagasaki
saga
oita
kumamoto
miyazaki
kagosima

実際に以下のように「uniq」コマンドを実行します。
「fukuoka」は行の前後に重複するデータがあるので1行のみ表示されます。
「saga」は行の前後に重複するデータがないため2行の同じデータが表示されています。

$ uniq kyushu.txt 
fukuoka
saga
nagasaki
saga
oita
kumamoto
miyazaki
kagosima

「uniq」コマンドで重複していない行だけを表示

オプション「-u」を使用することで重複していないデータのみを表示することができます。
以下コマンドで重複している「fukuoka」のデータがないことが確認できます。

$ uniq -u kyushu.txt 
saga
nagasaki
saga
oita
kumamoto
miyazaki
kagosima

「uniq」コマンドで重複した行のみを表示

「-d」オプションを使用することで重複しているデータのみを表示することができます。
以下コマンドでデータが重複している「fukuoka」のみが表示されています。

$ uniq -d kyushu.txt 
fukuoka

「uniq」コマンドで重複した行をカウントする

重複しているデータをカウント表示で確認することができます。
重複している「fukuoka」の左側に「2」と重複している数が表示されます。

$ uniq -c kyushu.txt 
      2 fukuoka
      1 saga
      1 nagasaki
      1 saga
      1 oita
      1 kumamoto
      1 miyazaki
      1 kagosima

「|」パイプを利用して表示

「cat」コマンド使用時に「|」パイプを使って「uniq」コマンドを使用することができます。
以下では「|」を使用した出力例となります。

$ cat kyushu.txt | uniq
fukuoka
saga
nagasaki
saga
oita
kumamoto
miyazaki
kagosima

以下はオプション「-d」を使用した例となります。

$ cat kyushu.txt | uniq -d
fukuoka

「uniq」コマンドオプション

「uniq」コマンドのオプションは以下の通りとなります。

$ uniq --help
使用法: uniq [OPTION]... [INPUT [OUTPUT]]
Filter adjacent matching lines from INPUT (or standard input),
writing to OUTPUT (or standard output).

With no options, matching lines are merged to the first occurrence.

Mandatory arguments to long options are mandatory for short options too.
  -c, --count           prefix lines by the number of occurrences
  -d, --repeated        only print duplicate lines, one for each group
  -D                    print all duplicate lines
      --all-repeated[=METHOD]  like -D, but allow separating groups
                                 with an empty line;
                                 METHOD={none(default),prepend,separate}
  -f, --skip-fields=N   avoid comparing the first N fields
      --group[=METHOD]  show all items, separating groups with an empty line;
                          METHOD={separate(default),prepend,append,both}
  -i, --ignore-case     ignore differences in case when comparing
  -s, --skip-chars=N    avoid comparing the first N characters
  -u, --unique          only print unique lines
  -z, --zero-terminated     line delimiter is NUL, not newline
  -w, --check-chars=N   行の中で N 文字以上を比較しない
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

フィールドとは空白類文字 (通常はスペースとタブ) がまとまってあり、その後に非空白類文字
があるものです。文字の前のフィールドはスキップされます。

Note: 'uniq' does not detect repeated lines unless they are adjacent.
You may want to sort the input first, or use 'sort -u' without 'uniq'.
Also, comparisons honor the rules specified by 'LC_COLLATE'.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report uniq translation bugs to <https://translationproject.org/team/>
Full documentation at: <https://www.gnu.org/software/coreutils/uniq>
or available locally via: info '(coreutils) uniq invocation'

「uniq」コマンドの使い方は以上となります。

エンジニアのオンライン学習

エンジニアにおすすめのオンライン教材比較
ITエンジニアが自宅で学習ができるオンラインスクール比較

エンジニアのおすすめ学習「Progate」と「Udemy」比較

VPS_比較
最新情報をチェックしよう!