웹사이트의 여러 키워드 수

웹사이트의 여러 키워드 수

현재 다음 명령이 있습니다

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필요하지 않습니다.

관련 정보