How to grep for the dollar symbol ($)?

Solution 1:

The problem is that the shell expands variable names inside double-quoted strings. So for "$$$" it tries to read a variable name starting with the first $.

In single quotes, on the other hand, variables are not expanded. Therefore, '$$$' would work – if it were not for the fact that $ is a special character in regular expressions denoting the line ending. So it needs to be escaped: '\$\$\$'.

Solution 2:

When you use double quotes " or none use double\: "\\\$\\\$\\\$"

cat t | grep \\\$\\\$\\\$ 

if you use in single quotes ' you may use:

cat t | grep '\$\$\$'

Solution 3:

$ grep '\$\$\$' temp
$$$ hello1
hello5 $$$

There's a superflous 'cat' in your command.