[linux] Escape double quote in grep

I wanted to do grep for keywords with double quotes inside. To give a simple example:

echo "member":"time" | grep -e "member\""

That does not match. How can I fix it?

This question is related to linux shell

The answer is


The problem is that you aren't correctly escaping the input string, try:

echo "\"member\":\"time\"" | grep -e "member\""

Alternatively, you can use unescaped double quotes within single quotes:

echo '"member":"time"' | grep -e 'member"'

It's a matter of preference which you find clearer, although the second approach prevents you from nesting your command within another set of single quotes (e.g. ssh 'cmd').