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

时间:2014-08-22 09:06:33

标签: linux shell ubuntu grep ubuntu-10.04

我有一个新安装的Web应用程序。在那里有一个下拉,其中一个选项是---。我想要做的是将其更改为All。所以我导航到应用程序文件夹并尝试以下命令。

grep -ir '---' .

我最终得到以下错误。

grep: unrecognized option '---'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

鉴于我正在使用

Distributor ID: Ubuntu
Description:    Ubuntu 10.04.4 LTS
Release:    10.04
Codename:   lucid

如何grep' ---'在Linux?

4 个答案:

答案 0 :(得分:21)

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

grep -- "---" your_file

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

其他选择:

  • 使用grep -e(请参阅Kent's solution,因为我在发布时添加了它 - 直到现在才注意到它):

  • 使用awk(请参阅anubhava's solution)或sed

    sed -n '/---/p' file
    

-n阻止sed打印行(默认操作)。然后,/---匹配包含---/p的行,以便打印它们。

答案 1 :(得分:7)

使用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.)
  

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

答案 2 :(得分:4)

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

grep '\-\-\-' your_file

仅转义第一个-

grep '\---' your_file

没有引号的替代方案:

grep \\--- your_file

答案 3 :(得分:3)

或者您可以使用awk:

awk '/---/' file

或sed:

sed -n '/---/p' file