2

さて、次のようなテキストファイルに住所のリストがあるとしましょう。

https://www.amazon.com
https://www.google.com
https://www.msn.com
https://www.google.com
https://www.netflix.com
https://www.amazon.com
...

そこには他にもたくさんのものがありますが、基本的に私が抱えている問題は、これを実行した後です:

grep "https://" addresses.txt | cut -d"/" -f3

私はamazon.comとgoogle.comを2回取得します。一度だけ入手したいです。ユニークなものをgrepだけで検索する方法がわかりません。

4

5 に答える 5

6

出力をパイプしてsortとuniqに接続します。

grep "https://" addresses.txt | cut -d"/" -f3 | sort | uniq
于 2012-07-25T15:27:38.040 に答える
3

sortこの目的に使用できます。

コマンドに別のパイプを追加し、並べ替えの独自の機能を使用して重複を削除するだけです。

     grep 'https://' addresses.txt | cut -d"/" -f3 | sort -u

編集:あなたはsed代わりに使用することができgrepcutそれはあなたのコマンドをに減らすでしょう

    sed -n 's@https://\([^/]*\).*@\1@p' < addresses.txt | sort -u
于 2012-07-25T15:27:56.883 に答える
1

grep "https://" addresses.txt | cut -d"/" -f3 | sort | uniqあなたが欲しいものです

于 2012-07-25T15:28:04.607 に答える
1

grep後に結果をフィルタリングします。

たとえば、を使用sort -uして並べ替えてから、一連の一意のエントリを生成します。

これにも使用できますuniqが、入力は事前に並べ替える必要があります。

これは、これらのユーティリティを一緒にパイプできることの美しさです。単一のgrepping/sorting / uniq(ing)ツールを使用するのではなく、個別の実行可能ファイルを取得し、それらを希望どおりにチェーン化できます。

于 2012-07-25T15:28:07.577 に答える
1

awkを使用すると、3つのパイプで4つではなく、1つのunixコマンドしか使用できません。

awk 'BEGIN {FS="://"}; { myfilter = match($1,/https/); if (myfilter) loggeddomains[$2]=0} END {for (mydomains in loggeddomains) {print mydomains}}' addresses.txt

于 2012-07-28T13:55:07.873 に答える