主にコマンドラインで作業していて、毎日大量のテキストファイルを処理している場合は、一意のに注意する必要があります。 指図。
Uniqコマンドを使用すると、ファイルから繰り返し行や重複行を簡単に見つけることができます。 Uniqは、重複を見つけるだけでなく、重複を削除したり、重複行の出現回数を表示したり、繰り返し行のみを表示したり、一意の行のみを表示したりするためのものです。
'uniq'コマンドは、隣接していない限り、繰り返される行を検出しないことに注意してください。したがって、最初にそれらをソートするか、sortコマンドをuniqと組み合わせて結果を取得する必要がある場合があります。いくつか例を挙げさせてください。
uniqコマンドはGNUcoreutilsパッケージの一部であるため、ほとんどのLinuxディストリビューションにプリインストールされています。ですから、インストールに煩わされることなく、いくつかの実用的なUniqコマンドの例を見てみましょう。
Uniqコマンドの例
まず、重複する行を含むファイルを作成しましょう。
$ vi ostechnix.txt
welcome to ostechnix welcome to ostechnix Linus is the creator of Linux. Linux is secure by default Linus is the creator of Linux. Top 500 super computers are powered by Linux
上記のファイルにあるように、繰り返し行はほとんどありません(1行目、2行目、3行目、5行目は重複しています)。
1。 Uniqコマンドを使用してファイル内の連続する重複行を削除します
引数なしで「uniq」コマンドを使用すると、連続するすべての重複行が削除され、一意の行のみが表示されます。
$ uniq ostechnix.txt
出力例:
ご覧のとおり、uniqコマンドは、指定されたファイル内の連続する重複行をすべて削除しました。上記の出力には、2行目と4行目にまだ重複があることに気付いたかもしれません。これは、uniqコマンドが、隣接している場合にのみ繰り返し行を省略しているためです。もちろん、連続していない重複を削除することもできます。以下の2番目の例を見てください。
2。重複する行をすべて削除します
$ sort ostechnix.txt | uniq
出力例:
見る?重複または繰り返し行はありません。つまり、上記のコマンドは、ファイルostechnix.txt
の各行を1回表示します。 。
上記の例では、sortコマンドをuniqと組み合わせて使用しました。これは、すでに述べたように、uniqは、隣接していない限り、重複/繰り返し行を検出しないためです。
3。ファイルから一意の行のみを表示する
ファイルの一意の行のみを表示するには、コマンドは次のようになります。
$ sort ostechnix.txt | uniq -u
出力例:
Linux is secure by default Top 500 super computers are powered by Linux
ご覧のとおり、特定のファイルには2行しかありません。
4。重複する行のみを表示する
同様に、以下のようにファイルから重複行を表示することもできます。
$ sort ostechnix.txt | uniq -d
出力例:
Linus is the creator of Linux. welcome to ostechnix
これらの2つは、ostechnix.txtファイルの繰り返し/複製された行です。 -d
に注意してください (小文字のd)は重複する行のみを印刷します 、グループごとに1つ 。 すべての重複行を印刷するには 、-D
を使用します (大文字d)以下のように。
$ sort ostechnix.txt | uniq -D
以下のスクリーンショットで両方のフラグの違いを確認してください。
5。ファイル内の各行の出現回数を表示する
何らかの理由で、指定されたファイルで1行が繰り返される回数を確認したい場合があります。これを行うには、 -c
を使用します 以下のようなフラグ。
$ sort ostechnix.txt | uniq -c
出力例:
2 Linus is the creator of Linux. 1 Linux is secure by default 1 Top 500 super computers are powered by Linux 2 welcome to ostechnix
次のコマンドを使用して、各行の出現回数をその行とともに表示し、最も頻繁に使用される順に並べ替えることもできます。
$ sort ostechnix.txt | uniq -c | sort -nr
出力例:
2 welcome to ostechnix 2 Linus is the creator of Linux. 1 Top 500 super computers are powered by Linux 1 Linux is secure by default
6。比較を「N」文字に制限する
Uniqコマンドを使用すると、 -w
を使用して、ファイル内の特定の行数に比較を制限できます。 国旗。たとえば、ファイル内の行の最初の4文字に比較を制限し、以下に示すように繰り返し行を表示します。
$ uniq -d -w 4 ostechnix.txt
7。最初の「N」文字との比較は避けてください
ファイル内のN文字の行との制限比較と同様に、-s
を使用して最初のN文字を比較することを回避することもできます。 フラグ。
次のコマンドは、ファイルの最初の4文字との比較を回避します。
$ uniq -d -s 4 ostechnix.txt
文字の代わりに最初のNフィールドを比較しないようにするには、上記のコマンドで「-f」フラグを使用します。
詳細については、ヘルプセクションを参照してください;
$ uniq --help
およびマニュアルページ。
$ man uniq
また読む:
- 初心者向けの例を含むFoldコマンドチュートリアル