Let's say I have a variable

line="This is where we select from a table."

now I want to grep how many times does select occur in the sentence.

grep -ci "select" $line

I tried but it never worked I also tried

grep -ci "select" "$line"

This still doesn't work I'm getting the following error

grep: This is where we select from a table.: No such file or directory
Best Answer


Have grep read on its standard input. There you go, using a pipe ...

$ echo "$line" | grep select

... or a here string ...

$ grep select <<< "$line"

You might also want to replace spaces by newlines before grepping

$ echo "$line" | tr ' ' '\n' | grep select

... or you could ask grep to print the match only.

$ echo "$line" | grep -o select

This will let you get rid of the rest of the line when there is a match

Edit: Oops, read a little too fast, thanks Marco. In order to count the occurences, just pipe any of these to wc(1) ;)

Another edit made after lzkata's comment, quoting $line when using echo.