Grep Keywords one by one

Hi

I am trying to determine number of lines having a specific keyword.
So for that I am using below query:

grep -i 'keyword1' filename|wc -l

This give me number of lines. Perfect for me.
However now the requirement is
I have multiple keywords together... and I have to find number of lines for each separately.
So now,

I want something like this:

grep -i 'keyword1|keyword2|keyword3|' filename|wc -l

This will give me total lines for all keywords. I need wc for each keyword separately. Like

keyword1 20
keyword2 10
keyword3 15

Any suggestions.

Thanks in advance.

 
for word in keyword1,keyword2,keyword3;do
count=`grep -i "$word" filename|wc -l`
echo "$word $count"
done
awk  '/keyword1/{keyword1++}/keyword2/{keyword2++} END{print "keyword1 "keyword1 "\nkeyword2 "keyword2}' file

Try

grep -Eoi "keyword1|keyword2|keyword3" file | sort | uniq -c