Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to grep '---' in Linux? grep: unrecognized option '---'

Tags:

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 ?

like image 468
Techie Avatar asked Aug 22 '14 09:08

Techie


People also ask

What does the '- V option to grep do?

-v means "invert the match" in grep, in other words, return all non matching lines.

What does grep $1 do?

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.


2 Answers

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.

like image 170
fedorqui 'SO stop harming' Avatar answered Sep 18 '22 16:09

fedorqui 'SO stop harming'


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 (-)

like image 45
Kent Avatar answered Sep 20 '22 16:09

Kent