云网牛站
所在位置:首页 > Linux命令 > Linux下的Grep多种模式和Grep多个字符串

Linux下的Grep多种模式和Grep多个字符串

2020-05-14 09:18:45作者:但佳稿源:云网牛站

在本文中,我们将向您展示如何使用GNU grep搜索多个字符串或模式,操作平台是Linux。grep是一种功能强大的命令行工具,可让您在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出,参考在Linux系统下使用grep命令搜索文件的详细用法

Linux下的Grep多种模式和Grep多个字符串

 

Grep多种模式

GNU grep支持三种正则表达式语法,Basic、Extended和Perl-compatible,如果未指定任何正则表达式类型,则grep会将搜索模式解释为基本正则表达式。

要搜索多个模式,请使用OR(交替)运算符。

交替运算符|(竖线)允许您指定不同的可能匹配项,这些匹配项可以是文字字符串或表达式集,在所有正则表达式运算符中,此运算符的优先级最低。

使用grep基本正则表达式搜索多个模式的语法如下:

grep 'pattern1\|pattern2' file...

始终将正则表达式括在单引号中,以避免shell解释和扩展元字符。

使用基本正则表达式时,元字符将解释为文字字符,为了保留元字符的特殊含义,必须使用反斜杠(\)对其进行转义,这就是为什么我们用斜杠转义OR运算符(|)的原因。

要将模式解释为扩展的正则表达式,请调用grep -E(或--extended-regexp)选项:

grep -E 'pattern1|pattern2' file...

 

Grep多个字符串

文字字符串是最基本的模式。

在以下示例中,我们正在Nginx日志错误文件中搜索所有出现fatal、error和critical:

grep 'fatal\|error\|critical' /var/log/nginx/error.log

如果要搜索的字符串包含空格,请用双引号将其引起来。

这是使用扩展正则表达式的相同示例,它消除了对运算符|进行转义的需要:

grep -E 'fatal|error|critical' /var/log/nginx/error.log

默认情况下,grep区分大小写,这意味着将大写和小写字符视为不同的字符。

要在搜索时忽略大小写,请使用-i选项调用grep(或--ignore-case):

grep -i 'fatal\|error\|critical' /var/log/nginx/error.log

搜索字符串时,grep将显示该字符串嵌入较大字符串中的所有行,因此,如果您要搜索“error”,则grep还将在较大的单词(例如“errorless”或“antiterrorists”)中嵌入“error”的行。

要仅返回指定字符串是整个单词(用非单词字符括起来)的那些行,请使用-w(或--word-regexp)选项:

grep -w 'fatal\|error\|critical' /var/log/nginx/error.log

文字字符包括字母数字字符(a-z、A-Z和0-9)和下划线(_),所有其他字符均视为非单词字符。

 

相关主题

在Fedora系统中使用grep进行搜索,附介绍ripgrep的安装

Linux命令子频道
精选文章
热门文章