如何对多个字符串和模式进行 Grep

2022年 10月 12日 30.5k 0

grep是一个强大的命令行工具,允许您在一个或多个输入文件中搜索与正则表达式匹配的行,并将每个匹配的行写入标准输出。

在本文中,我们将向您展示如何使用 GNUgrep搜索多个字符串或模式。

Grep 多种模式

GNUgrep支持三种正则表达式语法,Basic、Extended 和 Perl 兼容。如果未指定正则表达式类型,grep则将搜索模式解释为基本正则表达式。

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

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

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

grep 'pattern1|pattern2' file…

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

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

要将模式解释为扩展的正则表达式,请调用grep(-E或--extended-regexp) 选项。使用扩展正则表达式时,不要转义|运算符:

grep -E 'pattern1|pattern2' file…

有关如何构造正则表达式的更多信息,请查看我们的文章Grep regex

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区分大小写。这意味着大写和小写字符被视为不同。

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

单词字符包括字母数字字符(az、AZ 和 0-9)和下划线 (_)。所有其他字符都被视为非单词字符。
有关grep选项的更多详细信息,请访问我们的Grep 命令手册

结论

我们已经向您展示了如何grep搜索多个模式、字符串和单词。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论