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

12,179

Solution 1

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.

Solution 2

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

Solution 3

Another way is to escape each - with a backslash.

grep '\-\-\-' your_file

Escaping only the first - works too:

grep '\---' your_file

An alternative without quotes:

grep \\--- your_file

Solution 4

Or you can use awk:

awk '/---/' file

Or sed:

sed -n '/---/p' file
Share:
12,179

Related videos on Youtube

Techie
Author by

Techie

Remembering that I'll be dead soon, is the most important tool I've ever encountered to help me make the big choices in Life. Because almost everything - all external expectations, all pride, all fear of embarrassment or failure, these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die, is the best way I know to avoid the trap of thinking you have something to lose. You are already naked, there is no reason not to follow your heart. -- Steve Jobs

Updated on September 18, 2022

Comments

  • Techie
    Techie over 1 year

    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 ?