Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 递归grep搜索文件中的特殊字符(C+;+;运算符)_Shell_Command Line_Grep - Fatal编程技术网

Shell 递归grep搜索文件中的特殊字符(C+;+;运算符)

Shell 递归grep搜索文件中的特殊字符(C+;+;运算符),shell,command-line,grep,Shell,Command Line,Grep,我试图在目录中进行递归搜索,查找代码文件中出现以下字符序列的实例: -= 我正在CLI上使用以下命令: grep -rn -= --include=*.hpp . 我收到以下错误消息: grep: invalid option -- '=' Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. 不幸的是,这些帮助对解决我的问题没有多大帮助(或者至少,我看不出它是如何解决我的问题的)。

我试图在目录中进行递归搜索,查找代码文件中出现以下字符序列的实例:

-=

我正在CLI上使用以下命令:

grep -rn -= --include=*.hpp .
我收到以下错误消息:

grep: invalid option -- '='
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
不幸的是,这些帮助对解决我的问题没有多大帮助(或者至少,我看不出它是如何解决我的问题的)。

grep-r--=。
也许?
--
将选项(以-)与命令行的其余部分分开。顺便说一句:您可能必须在shell中隐藏星号,即使用
--include=\*.hpp

尝试:

grep -rn --include=*.hpp -- -= .

问题是
-=
被解释为命令行选项。使用
-
表示命令行选项的结束,因此
-=
被解释为一种模式。

是的,可以。我会尽快接受你的回答(大约5分钟内),谢谢!还要注意的是,doomster是对的,如果在您运行此操作的目录中有任何
.hpp
文件,您可能希望转义该
*
,以避免shell在
grep
甚至看到它之前将其全球化。例如,
--include='*.hpp'
。传统的解决方案是
grep-rne-=--include=*.hpp.
--
-E
选项允许您传入以破折号开头的正则表达式。