grep
是功能强大的命令行工具,可让您在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出。
在本文中,我们将向您展示如何使用GNU grep
搜索多个字符串或正则表达式。
更多grep命令教程:
Grep多种模式
GNU grep
支持三种正则表达式语法,即Basic,Extended和Perl兼容。 如果未指定任何正则表达式的类型,则grep
会将搜索模式解释为基本正则表达式。要搜索多个模式,请使用OR运算符。
OR运算符|
(管道)允许您指定不同的可能匹配项,这些匹配项可以是字符串或表达式集。 在所有正则表达式运算符中,该运算符的优先级最低。使用grep
基本正则表达式搜索多个模式的语法如下:
grep 'pattern1\|pattern2' file...
建议将正则表达式括在单引号中,以避免shell对元字符的解释和扩展。
使用基本正则表达式时,元字符将解释为字符。 为了保留元字符的特殊含义,必须使用反斜杠将其转义(\
)。 这就是为什么我们用斜杠转义OR运算符(|
)的原因。
要将模式解释为扩展的正则表达式,请调用grep
-E
(或--extended-regexp
)选项。 使用扩展的正则表达式时,请勿转义|
运算符:
grep -E 'pattern1|pattern2' file...
有关如何构造正则表达式的更多信息,请参见我们的文章Grep regex 。
Grep多个字符串
字符串是最基本的模式。在以下示例中,我们正在搜索Nginx log错误文件中出现fatal
,error
和critical
的单词的所有行:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
如果要搜索的字符串包含空格,请将其用双引号引起来。这是使用扩展的正则表达式的相同示例,从而消除了对运算符|
进行转义的步骤:
grep -E 'fatal|error|critical' /var/log/nginx/error.log
默认情况下,grep
区分大小写。 这意味着将大写和小写字符视为不同的字符。
要在搜索时忽略大小写,请调用grep with
-i
选项(或--ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
搜索字符串时,grep
将显示该字符串嵌入较大字符串中的所有行。 因此,如果您要搜索“error”,grep
还将打印出“error”内含较大字词的行。例如“errorless”或“antiterrorists”。
要仅返回指定字符串是整个单词的那些行,请使用-w
(或--word-regexp
)选项:
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
字符包括字母数字字符(a-z,A-Z和0-9)和下划线(_)。 所有其他字符均被视为非单词字符。有关grep
选项的更多详细信息,请访问我们的教程Grep命令。
结论
我们向您展示了如何使用 grep
多模式搜索,字符串和单词。如果您有任何问题或反馈,请随时发表评论。