如何使用“grep”来处理 * 和 _ 之类的字符?

如何使用“grep”来处理 * 和 _ 之类的字符?

我需要在一个或多个文件中查找一些文本。

这是我使用的:

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 术语。

相关内容