带符号的Linux grep

带符号的Linux grep,grep,Grep,我可能错过了一些非常愚蠢的事情,但我想不出来。基本上,我有一个SAS宏变量列表,我想知道它们在我的代码库中的使用位置。对于那些不了解SAS的人来说,基本上是使用宏变量,你可以用符号AND进行操作,因此如果变量名为var1,你可以用&var1(或&var1.但这对这个问题并不重要)来引用它 因此,我一直在使用grep进行如下搜索: grep-iRw“&宏变量”* 我无法复制/粘贴确切的结果,但我运行了以下操作,它返回了0个结果: grep-iRw“&lead\u year”* 然后我运行了以下命令

我可能错过了一些非常愚蠢的事情,但我想不出来。基本上,我有一个SAS宏变量列表,我想知道它们在我的代码库中的使用位置。对于那些不了解SAS的人来说,基本上是使用宏变量,你可以用符号AND进行操作,因此如果变量名为var1,你可以用&var1(或&var1.但这对这个问题并不重要)来引用它

因此,我一直在使用grep进行如下搜索:

grep-iRw“&宏变量”*

我无法复制/粘贴确切的结果,但我运行了以下操作,它返回了0个结果:

grep-iRw“&lead\u year”*

然后我运行了以下命令:

grep-iRw“潜在客户年”*

它返回了这一行:

parameters.csv:HPI_Hist_文件、rreap_HPI_数据、lead_年、lead_月、lead_日..txt、rreap_HPI_数据、lead_年、lead_月、lead_日..txt


为什么当我搜索
lead\u year
而不是
lead\u year
时,grep在查找前面有一个和的文件?这也是不一致的,对于我前面的大多数使用符号的搜索,它都成功地找到了所有结果,只是到目前为止,这是一个问题。

这是因为您的-w


关键部分是“前面有一个非单词组成字符”。在您的示例中,&lead_year前面有一个下划线。

grep(GNU grep)2.20是的,我甚至不记得为什么我使用w,我只是每次使用w时都会自动引导irw,我知道I和r的意思,但我想我不应该在这种情况下使用w。我知道我在做傻事,谢谢。
   -w, --word-regexp
          Select only those lines containing matches that form whole words.  The test is that the matching substring must either be at the beginning of the line, or preceded by
          a non-word constituent character.  Similarly, it must be either at the end of the line or followed by a non-word constituent character.   Word-constituent  characters
          are letters, digits, and the underscore.