GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでuniqコマンドを使用してリストを処理する方法

前回の記事でsortコマンドを見てきましたが、ファイルを並べ替えると、多くの場合、互いに隣接する多くの重複行が発生します。これらの線を正しく表示するのが難しくなります。

このシナリオでは、uniq コマンドは、出力に重複する行を1回印刷するのに役立ちます。実際には、繰り返される行を破棄し、隣接する最初の繰り返される行を印刷します。これにより、出力を正しく表示できます。

uniqの入力ファイルで使用される行 コマンドの長さは2048バイト(改行文字を含む)を超えたり、ヌル文字を含めたりすることはできません。

構文

uniq [OPTION]... [INPUT [OUTPUT]]

以下は、オプションなしで始まる一連の例です。いくつかのユースケースを見ていきます。 uniqのみを含むものもあります 、およびその他は追加のコマンドに依存しています。

オプションなし

以下はfile2という名前のファイルです 、いくつかのデータが含まれています。このファイルはソートされておらず、重複する行は互いに隣接していないことに注意してください。 uniqを使用する前に このファイルでコマンドを実行するには、sortする必要があります それ。この例では、uniqを試しました 元のファイルを使用してコマンドを実行しますが、catのように、出力をそのまま出力するだけです。 出力。次の例では、sortから出力を取得します コマンドを実行し、uniqでパイプします 指図。これは、uniqの動作を理解するのに役立ちます コマンド:

$ cat file2 ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha $ uniq file2 ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha $ sort file2 Budhha Budhha Budhha ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Dr.B.R.Ambedkar Dr.B.R.Ambedkar $ sort file2 | uniq Budhha ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar

-c、-countオプションを使用

以下の次の例では、-cを使用しています 繰り返される行をカウントするオプション。 uniq コマンドは、その行のプレフィックスとしてカウントされるものを出力します。次の例は、最初の行が3回繰り返され、2番目の行が1回繰り返され、3番目の行が3回繰り返されることを示しています。

$ sort file2 | uniq -c
    3 Budhha
    1 ChhatrapatiShahuMaharaj
    3 Dr.B.R.Ambedkar

-d、-repeatedオプションを使用

-d オプションは、繰り返される行のみを出力します。重複していない行は破棄されます。したがって、 ChhatrapatiShahuMaharajの行 以下の例では破棄されています:

$ sort file2 | uniq -d
Budhha
Dr.B.R.Ambedkar

以下の例では、-cを使用しました -d かどうかをクロスチェックするオプション オプションは、繰り返される行のみを印刷するかどうかです:

$ sort file2 | uniq -cd
    3 Budhha
    3 Dr.B.R.Ambedkar

-Dを使用すると、-all-repeatedオプション

-D オプションは、繰り返される行を出力し、重複しない行を破棄します。次の例では、uniq コマンドは、重複するすべての行のみを出力し、重複しない行を破棄します:

$ sort file2 | uniq -D
Budhha
Budhha
Budhha
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

-uを使用すると、-uniqueオプション

上記のオプションの反対に、-u オプションは、一意の行、つまり重複しない行を印刷します。したがって、以下の例では、 ChhatrapatiShahuMaharajを出力します。 出力として:

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

-iを使用すると、-ignore-caseオプション

-iを使用する オプションの場合、文字の大文字と小文字の区別は無視できます。以下に、uniqの出力を示します。 -iがある場合とない場合のコマンド 比較するオプション:

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

-fを使用すると、-skip-fields =N

重複する行をフィルタリングするために、一部のフィールドをスキップする必要がある場合があります。これは、-fを使用して可能です オプション。次の例では、最初のフィールド(最初の列)をスキップして、2番目のフィールドの重複行を比較しています。 -fがある場合とない場合の両方の例を示しましたが、 オプションの動作をよりよく理解するためのオプション:

$ cat file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq -f 1 file5
Amit aaaa
Advi bbbb

[読者も気に入っています:Linuxコマンドラインでのパイプの操作]

-sを使用すると、-skip-char=Nオプション

フィールドと同様に、-sを使用して文字をスキップすることもできます オプション。 uniq コマンドは最初の重複行のみを出力し、他の重複行を破棄します。したがって、 33aa および55bb 破棄されました。次に例を示します。

$ cat file4
22aa
33aa
44bb
55bb

$ uniq file4
22aa
33aa
44bb
55bb

$ uniq -s 2 file4
22aa
44bb

-wを使用すると、-check-chars=Nオプション

文字をスキップするのと同じように、-wを使用して文字を検討することもできます。 例のようなオプション:

$ cat file6
aa12
aa34
bb56
bb78

$ uniq file6
aa12
aa34
bb56
bb78

$ uniq -w 2 file6
aa12
bb56

--versionオプション付き

--versionを使用します uniqのバージョンを確認するオプション コマンド。

$ uniq --version
uniq (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.

[無料ダウンロード:高度なLinuxコマンドのチートシート。 ]

まとめ

uniq 隣接していない限り、繰り返される線は検出されません。 uniq コマンドは、繰り返される行の数をカウントして出力できます。重複行と同様に、一意の行(重複しない行)もフィルタリングでき、大文字と小文字の区別も無視できます。重複する行を比較する前にフィールドと文字をスキップし、行をフィルタリングするための文字を検討することもできます。

複数のuniqを確認した後 コマンドオプションについては、参照用に小さな画像を共有したいと思います。


Linux
  1. Linuxsedコマンドの使用方法

  2. Linuxgrepコマンドの使用方法

  3. Linuxでhistoryコマンドを使用する方法

  1. Sysadminツールボックス:Linuxでsortコマンドを使用してテキストを処理する方法

  2. Linuxでidコマンドを使用する方法

  3. Linux で「screen」コマンドを使用する方法

  1. Linuxの履歴コマンドの使用方法

  2. Linuxでmd5sumコマンドを使用する方法

  3. Linuxxargsコマンドの使用方法