如何grep指向指针的指针(在C+;+;源代码中)?

如何grep指向指针的指针(在C+;+;源代码中)?,grep,Grep,我一直在使用grep对目录中的文本执行递归搜索,即 grep -Hrn "some-text" ./ 但是,当我需要搜索指针或指针的指针时,我遇到了一些麻烦: grep -Hrn "double**" ./ > grep: repetition-operator operand invalid 我已经尝试了一些方法,包括通过谷歌搜索找到的一些方法: grep -Hrn "double[**]" ./ grep -Hrn "double[*][*]" ./ 但两者似乎都不起作用。有指针

我一直在使用
grep
对目录中的文本执行递归搜索,即

grep -Hrn "some-text" ./
但是,当我需要搜索指针或指针的指针时,我遇到了一些麻烦:

grep -Hrn "double**" ./
> grep: repetition-operator operand invalid
我已经尝试了一些方法,包括通过谷歌搜索找到的一些方法:

grep -Hrn "double[**]" ./
grep -Hrn "double[*][*]" ./

但两者似乎都不起作用。有指针吗?

您必须使用
\
转义
*
。比如说

$ echo "double***" | grep "double\*\*\*"
double***
如果不转义
*
,它将与
*
前面的字符匹配零次或多次。因此,一个
*
将匹配,例如
DoubleEE
,但第二个
*
将导致错误,因为操作数(在
*
之前的字符)无效,因为它再次是
*
。这正是错误消息告诉您的

使用
[]
的版本也应该可用。正如注释中提到的,问题可能是变量声明中包含空格。以下正则表达式与这些匹配(现在使用
*
运算符):


grep“double[*][*]”
应该可以工作
但两者似乎都不起作用
-你是如何检测到的?@KamilCuk我得到了一个空白输出,这应该不是事实,因为目录中有很多。是否有
双**
?你确定你不想要双重**?非常确定-有人编写了代码的其他部分,他对代码样式要求非常严格,所以我无法想象他会犯这样的新手错误:D@QuangThinhHa像
double**i
这样的声明没有错误(假设为C)。
$ echo "double  **" | grep "double\s*\*\*"
double  **