ウェブサイトの複数のキーワード数

ウェブサイトの複数のキーワード数

現在、次のコマンドがあります

wget -O - -q http_url_goes_here |
    grep -Eci '(cart|shop|buy|order|store|shipping|products|price)'

それは私にサイトから次のキーワードのそれぞれのすべての項目を提供します(cart|shop|buy|order|store|shipping|products|price)

私が経験している問題は、特定の単語が複数回出現すると、数が200まで上がることです。ウェブサイトで見つかったキーワードの数を表す0から8の数を取得したいと思います。同様に、各キーワードの数は最大1ずつ増やす必要があります。

ご協力ありがとうございます。

答え1

GNU grepを使用してください:

wget -O - -q http_url_goes_here |
    grep -wEoi 'cart|shop|buy|order|store|shipping|products|price' | 
        sort -fu | wc -l

司教などを店のヒット作で計算しないようにコマンドに-wこれを追加します。grep

答え2

POSIX的に:

tr -cs '[:alnum:]_' '[\n*]' | grep -xiF 'cart
shop
buy
order
store
shipping
products
price' | sort -fu | wc -l

ファイルに単語のリストを含め、次を使用することもできます。

tr -cs '[:alnum:]_' '[\n*]' | grep -xiFf word.list | sort -fu | wc -l

次のようにして効率を向上させることができます。

tr -cs '[:alnum:]_' '[\n*]' | awk -v o=0 '
   {$0=tolower($0)}
   NR==FNR{a[$0];n++;next}
   {
     for (i in a) if ($0 == i) {
       if (++o == n) exit
       delete a[i]
     }
   }
   END {print o}' word.list -

答え3

Volker Siegelの答えは非常に便利です。ただし、出力が0間の数字になるようにするには、1を追加して行数を計算する必要が8あります。grep

$ wget -O - -q ix.de | grep -Eoi '(cart|shop|buy|order|store|shipping|products|price)' | sort -i | uniq -i | grep -c ''
2

-c現在のフラグはuniq必要ありません。

関連情報