我需要在一个或多个文件中查找一些文本。
这是我使用的:
grep -irI "hello" ~/
*
但是,如果我想查找包含或等字符的字符串,_
那么这些字符似乎会被忽略。
假设我想在所有文件中搜索字符串a**__
。
我该怎么做?非常感谢——我就是想不通!
答案1
有一个 -F 选项:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)
这将禁用通过正则表达式进行搜索以及解释诸如*
或 之类的字符.
。例如:
$ cat test
a**__
$ grep -F 'a**__' test
a**__
答案2
\
您应该在因为前面使用转义字符( ) *
,否则,要搜索的字符串将变成正则表达式。
例如,如果您想搜索**__
,您可以使用:
grep -irI "\*\*__" ~/
更多关于:在正则表达式中,哪些字符需要转义?。
答案3
一个简单的双引号(“”)加上一个转义字符(“\”)就可以完成这个工作。
例如,如果我想从当前文件夹中搜索 ind*x.html 我将使用:
grep -r "ind\*x.html" ./
注意:如果您不使用引号,那么您需要使用两个反斜杠。
grep -r ind\\*x.html ./
两者都会在文件中搜索 ind*x.html 术语。