テキストファイルのユーニークな行を表示するのは、「uniq」コマンドを使用します。
「uniq」コマンドの意味はユニーク「唯一」となり、同じデータの行は前後に重複してある場合、その中の1行のみを表示します。
あくまでその行の前後なので同じデータが、対象の行の前後以外にある場合は、uniqコマンドにが当せず、表示されます。
目次
「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エンジニアが自宅で学習ができるオンラインスクール比較 | |