How to grep '---' in Linux? grep: unrecognized option '---'
Asked Answered
N

4

31

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 ?

Nationalist answered 22/8, 2014 at 9:6 Comment(0)
S
39

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.

Sweat answered 22/8, 2014 at 9:8 Comment(0)
S
11

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

Siriasis answered 22/8, 2014 at 9:13 Comment(1)
For completeness: egrep can also be used which is equivalent to grep -e --color=auto but is provided as a precompiled binary.Pussyfoot
A
6

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
Andraandrade answered 22/8, 2014 at 9:10 Comment(0)
J
3

Or you can use awk:

awk '/---/' file

Or sed:

sed -n '/---/p' file
Jeanene answered 22/8, 2014 at 9:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.