grep出力から一意の結果を除外するにはどうすればよいですか?


75

Linuxでは、を使用してファイルから文字列をgrepできますgrep mySearchString myFile.txt。一意の結果のみを取得するにはどうすればよいですか?

回答:


125

これはsortuniqユーティリティを使用して実現できます。

例:

[john @ awesome〜] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest"
テスト
テスト
テスト
別のテスト
テスト
[john @ awesome〜] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest" | 並べ替え| ユニック
別のテスト
テスト

データによっては、いくつかのスイッチも利用したい場合があります。


9
@John T- データが注文されていない場合に備えて、sortuniqに使用することをお勧めします。そうしuniqないと、完全に機能しません。
スタッド

今、私は賛成票を投じることができます!また、他のスクリプトをここに書くのを手伝ってくれました;)
Studer

42
sort -u代わりに使用しますsort | uniq。プロセスを節約し、合計I / Oを削減し、実行する必要がある比較の合計数を削減します。
クリスジョンセン

あなたはそれがより良い解決策は、現在与えられた答えだとしてそれが答えをコメントにする必要があります@ChrisJohnsen
ニコヴァンベレ

1

次を使用できます。

grep -rohP "(mySearchString)" . | sort -u

-r:再帰的

-o:テキストの一致部分のみを印刷します

-h:ファイル名を出力しません

-P:Perlスタイルの正規表現(場合によっては、代わりに-Eを使用できます)

sort -u優れているsort | uniq@クリスヨンセンが指摘したように、。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.