文章目录
{ .ImgAlt }}

grep是一个强大的命令行工具,它允许你在一个或者多个输入文件中匹配一个正则表达式,并且将每一个匹配结果输出到标准输出。

在本文中,我们将会向你展示如何使用GNU grep 来搜索多个字符串或者样式。

一、使用 Grep 搜索多个样式

GNU grep 支持三种正则表达式语法,基本的,扩展的,和兼容 Perl 的。当没有指定任何正则表达式,grep将搜索样式解释为基本的正则表达式。

想要搜索多个样式,使用 OR(间隔符)。

这个间隔操作符号(|)允许你指定不同的样式,例如字符串或者正则表达式。这个操作符比所有的正则表达式操作符的优先级都要低。

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

grep 'pattern1\|pattern2' file...

通常用单引号将正则表达式包裹起来,避免被 shell 转义。

当使用基本的正则表达式时,元字符将被解释为文字字符。想要保持元字符的意义,它们必须和\一起使用。这就是为什么我们避免将间隔符和\一起使用。

想要将样式解释为扩展的正则表达式,运行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 加上-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, and 0-9) ,还有下划线(_)。所有其他的字符被认为非词语字符。

想要获得更多关于grep选项的详细信息,浏览我们的文章 Grep command

三、总结

我们已经向你展示了如何使用grep来搜索多个样式,字符串和词语。

腾讯云学生服务器_学生机_云服务器优惠套餐-云+校园 - 腾讯云



如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646 雪梦科技交流群

原文 :https://linuxize.com/post/grep-multiple-patterns/

    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议
Vultr: 免费赠送50美元

相关推荐