uniqを使用してLinuxテキストファイルで重複データを見つける方法

uniqを使用してLinuxテキストファイルで重複データを見つける方法

行が繰り返され、単語が重複しているテキストファイルに出くわしたことがありますか?たぶん、あなたは定期的にコマンド出力を操作していて、それらを個別の文字列でフィルタリングしたいと思うでしょう。 Linuxでのテキストファイルと冗長データの削除に関しては、uniqコマンドが最善の策です。





この記事では、uniqコマンドについて詳しく説明するとともに、コマンドを使用してテキストファイルから重複行を削除する方法について詳しく説明します。





uniqコマンドとは何ですか?

Linuxのuniqコマンドは、テキストファイルに同じ行を表示するために使用されます。このコマンドは、テキストファイルから重複する単語や文字列を削除する場合に役立ちます。 uniqコマンドは、冗長コピーを見つけるために隣接する行と一致するため、ソートされたテキストファイルでのみ機能します。





幸いなことに、あなたはパイプすることができます 選別 コマンドと互換性のある方法でテキストファイルを整理するには、uniqを使用してコマンドを実行します。繰り返し行を表示する以外に、uniqコマンドはテキストファイル内の重複行の発生をカウントすることもできます。

uniqコマンドの使用方法

uniqで使用できるさまざまなオプションとフラグがあります。それらのいくつかは基本的で、繰り返し行を印刷するなどの単純な操作を実行しますが、その他はLinuxでテキストファイルを頻繁に操作する上級ユーザー向けです。



基本構文

uniqコマンドの基本的な構文は次のとおりです。

uniq option input output

...どこ オプション コマンドの特定のメソッドを呼び出すために使用されるフラグです。 入力 は処理用のテキストファイルであり、 出力 出力を保存するファイルのパスです。





NS 出力 引数はオプションであり、スキップできます。ユーザーが入力ファイルを指定しない場合、uniqは標準出力からデータを入力として受け取ります。これにより、ユーザーはuniqをパイプすることができます 他のLinuxコマンド

テキストファイルの例

テキストファイルを使用します Duplicate.txt コマンドの入力として。





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

このテキストファイルは、 選別 指図。他のテキストファイルを使用している場合は、次のコマンドを使用して並べ替えることができます。

sort filename.txt > sorted.txt

重複する行を削除する

uniqの最も基本的な使用法は、入力から繰り返される文字列を削除し、一意の出力を出力することです。

uniq duplicate.txt

出力:

システムは行の2番目のオカレンスを表示しないことに注意してください これはテキストファイルです 。また、前述のコマンドはファイル内の一意の行のみを出力し、元のテキストファイルの内容には影響しません。

繰り返し行を数える

テキストファイルの繰り返し行数を出力するには、 -NS デフォルトのコマンドでフラグを立てます。

uniq -c duplicate.txt

出力:

システムは、テキストファイルに存在する各行の数を表示します。あなたはその線を見ることができます これはテキストファイルです ファイル内で2回発生します。デフォルトでは、uniqコマンドでは大文字と小文字が区別されます。

テキストファイルから重複する行のみを印刷するには、 -NS 国旗。 NS -NS を意味する 複製

uniq -D duplicate.txt

システムは次のように出力を表示します。

This is a text file.
This is a text file.

重複をチェックしながらフィールドをスキップする

文字列を照合しながら特定の数のフィールドをスキップする場合は、 -NS コマンドでフラグを立てます。 NS -NS を意味する 分野

次のテキストファイルを検討してください fields.txt

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

最初のフィールドをスキップするには:

uniq -f 1 fields.txt

出力:

192.168.0.1 TCP
Linux FS

前述のコマンドは、最初のフィールド(IPアドレスとOS名)をスキップし、2番目の単語(TCPとFS)と一致しました。次に、各一致の最初の発生を出力として表示しました。

比較するときに文字を無視する

フィールドをスキップするのと同様に、文字もスキップできます。 NS -NS フラグを使用すると、重複行を照合するときにスキップする文字数を指定できます。この機能は、作業しているデータが次のようなリストの形式である場合に役立ちます。

PCからAndroidWi-FiDirectにファイルを転送する
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

ファイルの最初の2文字(リストの番号付け)を無視するには list.txt

uniq -s 2 list.txt

出力:

上記の出力では、最初の2文字は無視され、残りの文字は一意の行と一致していました。

最初のN文字の重複を確認してください

NS -の フラグを使用すると、固定数の文字のみをチェックして重複を確認できます。例えば:

uniq -w 2 duplicate.txt

前述のコマンドは最初の2文字のみに一致し、一意の行がある場合はそれを出力します。

出力:

大文字と小文字の区別を削除する

上記のように、uniqはファイル内の行を照合するときに、大文字と小文字を区別します。大文字と小文字を無視するには、 -私 コマンドでオプション。

uniq -i duplicate.txt

次の出力が表示されます。

上記の出力で、uniqが行を表示しなかったことに注意してください これをキャッチしてくださいこれはテキストファイルです

出力をファイルに送信

uniqコマンドの出力をファイルに送信するには、 出力リダイレクト (( >> )次のような文字:

uniq -i duplicate.txt > otherfile.txt

テキストファイルに出力を送信している間、システムはコマンドの出力を表示しません。新しいファイルの内容は、 指図。

cat otherfile.txt

他の方法を使用して Linuxのファイルにコマンドライン出力を送信する

uniqを使用した重複データの分析

Linuxサーバーの管理中は、ほとんどの場合、ターミナルで作業するか、テキストファイルを編集します。したがって、テキストファイル内の行の冗長なコピーを削除する方法を知ることは、Linuxスキルセットにとって大きな資産になる可能性があります。

ファイル内のテキストをフィルタリングおよびソートする方法がわからない場合、テキストファイルの操作はイライラする可能性があります。作業を簡単にするために、Linuxには次のようないくつかのテキスト編集コマンドがあります。 sedawk これにより、テキストファイルとコマンドライン出力を効率的に操作できます。

共有 共有 つぶやき Eメール これらの10のSedの例は、Linuxパワーユーザーになります

Linuxのパワーユーザーになりたいですか? sedを理解することは役に立ちます。これらの10のsedの例から学びましょう。

次を読む
関連トピック
  • Linux
  • Linux
著者について ディーペッシュシャルマ(79件の記事が公開されました)

Deepeshは、MUOのLinuxのジュニアエディターです。彼はLinuxに関する情報ガイドを作成し、すべての新規参入者に至福の体験を提供することを目指しています。映画についてはよくわかりませんが、テクノロジーについて話したいのなら、彼はあなたの男です。余暇には、本を読んだり、さまざまな音楽ジャンルを聴いたり、ギターを弾いたりしています。

DeepeshSharmaのその他の記事

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください