I have a newly installed web application. In that there is a drop down where one option is ---. What I want to do is change that to All. So I navigated to application folder and tried the below command. 
grep -ir '---' .   I end up with below error.
grep: unrecognized option '---' Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information.   Given that I'm using
Distributor ID: Ubuntu Description:    Ubuntu 10.04.4 LTS Release:    10.04 Codename:   lucid   How to grep '---' in Linux ?
-v means "invert the match" in grep, in other words, return all non matching lines.
grep searches for the string $1 . The $1 is not replaced by a value from the command line. In general, single quotation marks are “stronger” than double quotation marks.
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) or sed:
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.
use grep's -e option, it is the right option for your requirement:
   -e PATTERN, --regexp=PATTERN           Use PATTERN as the pattern.  This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-).  (-e is specified           by POSIX.)   to protect a pattern beginning with a hyphen (-)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With