我有一个新安装的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?
答案 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