0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用grep命令的多种搜索模式及搜索多个字符串

如意 来源:良许Linux微信公众号 作者:良许 2020-09-07 11:24 次阅读

大家好,我是良许!

今天向大家介绍一个非常有用的技巧,那就是使用 grep 命令查找多个字符串。

简单介绍一下,grep 命令可以理解为是一个功能强大的命令行工具,可以用它在一个或多个输入文件中搜索与正则表达式相匹配的文本,然后再将每个匹配的文本用标准输出的格式写出来。

因此,良许向大家分享一下如何使用 grep 命令的多种搜索模式以及使用 grep 搜索多个字符串:

多模式 Grep 命令

grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。

要搜索多个匹配模式,可以使用 OR ( alternation ) 运算符。我们可以用 OR 运算符 |( pipe )指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。

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

$ grep ‘pattern1\|pattern2’ filename

这里需要注意的是,始终要用单引号将正则表达式括起来,因为单引号内的内容原样输出,被单引号括起的内容不管是常量还是变量不会发生替换。

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

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

$ grep -E ‘pattern1|pattern2’ file

Grep命令搜索多个字符串

通常我们认为,文字字符串是最基本的模式。

接下来我们将示例,搜索某用户日志错误文件中出现的所有 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

当你只想搜索某个单词时,比如你想搜索的是单词 error ,grep 命令会输出所有包含 error 字符串的行,即它除了会输出包含 error 单词的行,还会输出包含 errorless 或 antiterrorists 等非 error 单词的行,这样是极不方便的。

因此要仅返回指定字符串是整词的行,或者是由非单词字符括起来的行,可以使用 grep 加 -w (或 --word-regexp )选项:

$ grep -w ‘fatal|error|critical’ /var/log/nginx/error.log

值得注意的是,单词字符包括有字母、数字字符(比如 a-z、a-Z 和 0-9 )以及下划线( _ ),所有其他字符都被视为非单词字符。

总结

在工作中,我们经常需要用到 grep 命令来搜索字符串,学会了使用 grep 搜索多个字符串这个技巧,一定有机会用上的。实际上,grep 命令远不止本文所讲的功能,如果你对 grep 命令的功能有任何疑问或者还想学习它的其他功能,请留言告诉我呗!
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121890
  • 字符串
    +关注

    关注

    1

    文章

    552

    浏览量

    20132
  • grep
    +关注

    关注

    0

    文章

    22

    浏览量

    4681
收藏 人收藏

    评论

    相关推荐

    grep命令搜索字符串之技巧

    做嵌入式linux开发的,相信大家对source insight 再熟悉不过了,source insight非常强大,尤其当我们的工程浩大,想要搜索个字符串如函数、宏时,source
    发表于 12-17 23:34

    labview怎样提取几个字符串中共同的字符

    有几个字符串(中文),我想提取出它们共有的字。我用生肖打个比喻:字符串A:牛马蛇字符串B:马猴虎字符串C:羊狗马结果就是输出字符‘马’。当然
    发表于 07-07 18:53

    labview中已知4个字符串(每个字符串包含一个字符)如何随机排列?

    labview中已知4个字符串(每个字符串包含一个字符)如何随机排列?求大神给个程框图。
    发表于 01-22 15:43

    请问labview中执行系统命令调用键盘的命令行该输入哪个字符串

    labview中 执行系统命令调用键盘的命令行该输入哪个字符串
    发表于 08-19 10:34

    12个 Linux 中 grep 命令的超级用法实例

    ;main" setup.py8.在所有目录里递归的搜索假若你要在当前文件夹里搜索个字符串,而当前文件夹里又有很多子目录,你可以指定一个-r选项以便于递归的搜索: $ sudo
    发表于 05-12 08:00

    如何判断一个字符串开头?

    命令以“$Cmd,”开头,以“,”分隔,以“*”结尾。单片机回复以“$Message,”开头,以“,”分隔,以“*”结尾。如果错误这以“$Message,ERROR,”开头,以“,”分隔,以“*”结尾。我想问我如何判断一个字符串开头,判断一
    发表于 09-11 22:13

    如何输出连接的一组字符串中的第一个字符串

    本帖最后由 疃12345 于 2021-4-19 22:11 编辑 如何输出第一个字符串?要求单独输出第一个字符串,不影响这一组字符串的连接与输出,如图所示,输出数值0.486906,然后继续显示连接的
    发表于 04-19 22:07

    CH573F怎么保存多个字符串的数据并读取出来?

    我现在使用的是EVT中Peripheral实例我在使用BLE调试助手时,想通过发送多个字符串到BLE蓝牙模块上。但是接收的时候只收到了第一个字符串的值,请问一下这个怎么修改呢?非常感谢!!
    发表于 08-08 06:21

    UART_LOOP_查询接收多个字符串

    UART_LOOP_查询接收多个字符串源码
    发表于 01-21 11:11 6次下载

    Labview之搜索替换字符串

    Labview之搜索替换字符串,很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:23 0次下载

    Linux中用grep命令搜索单词及统计匹配的行数

    使用 grep 命令搜索多个单词要使用 grep 命令
    发表于 04-02 14:46 516次阅读

    如何利用Java判断一个字符串是否包含某个字符

    如何利用Java通过不同的方法来判断一个字符串是否包含某个字符。 **2 ****方法** 1. .contains方法
    的头像 发表于 02-17 15:13 1113次阅读
    如何利用Java判断一<b class='flag-5'>个字符串</b>是否包含某<b class='flag-5'>个字符</b>

    mysql字符串包含某个字符串

    将详尽、详实、细致地探讨MySQL中字符串包含的实现方法。 在MySQL中,可以通过使用内建函数和通配符来实现字符串包含的操作。下面将详细介绍几种常用的方法: 使用LIKE通配符: LIKE是MySQL中用于模式匹配的通配符,可
    的头像 发表于 11-16 14:52 1149次阅读

    linux搜索文件里的字符串

    在Linux系统中,我们可以使用各种方法来搜索文件中的字符串。在本文中,我将为您详细介绍几种常用的方法和工具。让我们开始吧! grep命令 grep
    的头像 发表于 11-23 10:20 524次阅读

    oracle判断字符串包含某个字符

    包含某个字符,以及介绍使用的相关函数。 正文: 一、使用INSTR函数进行判断: INSTR函数是Oracle中最常用的字符串函数之一,它用于查找字符串中是否包含某个字符。INSTR函
    的头像 发表于 12-06 09:53 5483次阅读