This happens because grep interprets --- as an option instead of a text to look for. Instead, use --:
grep -- "---" your_file
This way, you tell grep that the rest is not a command line option.
Other options:
-
use
grep -e(see Kent’s solution, as I added it when he had already posted it – didn’t notice it until now): -
use
awk(see anubhava’s solution) orsed:sed -n '/---/p' file
-n prevents sed from printing the lines (its default action). Then /--- matches those lines containing --- and /p makes them be printed.