現在、次のコマンドがあります
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
必要ありません。