如何在Linux中grep'---'?grep:无法识别的选项'---'

Tec*_*hie 15 linux shell ubuntu grep ubuntu-10.04

我有一个新安装的Web应用程序.在那里有一个选项是下拉---.我想做的是改变它All.所以我导航到应用程序文件夹并尝试以下命令.

grep -ir '---' .
Run Code Online (Sandbox Code Playgroud)

我最终得到以下错误.

grep: unrecognized option '---'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
Run Code Online (Sandbox Code Playgroud)

鉴于我正在使用

Distributor ID: Ubuntu
Description:    Ubuntu 10.04.4 LTS
Release:    10.04
Codename:   lucid
Run Code Online (Sandbox Code Playgroud)

如何在Linux中grep'---'?

fed*_*qui 22

这是因为grep解释---为选项而不是要查找的文本.相反,使用--:

grep -- "---" your_file
Run Code Online (Sandbox Code Playgroud)

这样,您可以告诉grep其余部分不是命令行选项.

其他选择:

-n防止sed打印行(默认操作).然后/---匹配包含那些线---/p使它们被打印.


Ken*_*ent 9

使用grep的-e选项,它是您的要求的正确选项:

   -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.)
Run Code Online (Sandbox Code Playgroud)

保护以连字符开头的模式( - )


nrz*_*nrz 5

另一种方法是-用反斜杠转义每个。

grep '\-\-\-' your_file
Run Code Online (Sandbox Code Playgroud)

也只转义第一个-作品:

grep '\---' your_file
Run Code Online (Sandbox Code Playgroud)

不带引号的替代方案:

grep \\--- your_file
Run Code Online (Sandbox Code Playgroud)