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

前端 未结 4 459
生来不讨喜
生来不讨喜 2020-12-10 11:28

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 navig

相关标签:
4条回答
  • 2020-12-10 11:53

    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.

    0 讨论(0)
  • 2020-12-10 11:56

    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
    
    0 讨论(0)
  • 2020-12-10 12:07

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

    0 讨论(0)
  • 2020-12-10 12:16

    Or you can use awk:

    awk '/---/' file
    

    Or sed:

    sed -n '/---/p' file
    
    0 讨论(0)
提交回复
热议问题