前言

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 

1.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 )以及下划线( _ ),所有其他字符都被视为非单词字符。

2.grep同时匹配多个关键字或任意关键字

2.1与操作

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep word1 file.txt | grep word2 |grep word3

必须同时满足三个条件(word1、word2和word3)才匹配。

2.2 或操作

grep匹配任意关键字

grep -E 'str1|str2|str3' filename //找出文件(filename)中包含str1或者包含str2或者包含str3的行

egrep实现

egrep 'str1|str2|str3' filename //用egrep同样可以实现

awk实现

awk '/str1|str2/str3/' filename  //awk 的实现方式

2.3其他操作

grep -i pattern filename #不区分大小写地搜索。默认情况区分大小写。
grep -l pattern filename #只列出匹配的文件名。
grep -L pattern filename #列出不匹配的文件名。
grep -w pattern filename #只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)。

参考文章:

1.grep同时匹配多个关键字或任意关键字

2.grep多个关键字“与”和“或”

3.grep 满足 或 排除多个关键字

4.如何使用Grep命令查找多个字符串

Grep命令查找多个字符串(grep同时匹配多个关键字或任意关键字)相关推荐

  1. 利用grep命令查找字符串分析log文件的一次实践

    需求场景: 我需要分析一个服务器访问日志,分析百度蜘蛛这个月对求索网页面的抓取情况. 分析问题: 我的一个access.log文件大小有35M,不可能直接通过打开查看.我需要过滤掉一些没有的信息,只保 ...

  2. centos在文本中搜索字符串_linux(centos8):用grep命令查找文件内容

    一,grep的用途: linux平台有最常用的三大文本处理工具:awk/sed/grep grep的功能:搜索指定文件的内容,按照指定的模式匹配,并输出匹配内容所在的行. 需要注意的地方:grep只支 ...

  3. 用grep命令查找文件中带特定扩展名的字符串

    2019独角兽企业重金招聘Python工程师标准>>> 如在日志中查找对js文件的请求,可以这么写 grep -Po '\w+\.js' access.log 如果要进一步排除一些文 ...

  4. linux中grep命令查找目录下,linux中查找grep与find命令的使用

    在日常工作中,我们常常会在自己的电脑寻找某些不知道放在哪里的私密文件,通常我们会在资源管理器的搜索栏里输入一些关键字去帮助我们快速去定位查找该文件.在linux系统中也有这样的功能,只不过在linux ...

  5. 【Linux】使用grep命令查找文件内容

    文章目录 grep简介 grep语法 grep常用选项 示例 模式匹配 grep命令使用简单实例 grep命令使用复杂实例 cat/more/tail 与 grep组合使用 grep简介 grep是l ...

  6. linux 搜索文件内容 包含某个单词,grep命令 查找包含某内容的文件

    作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正 ...

  7. grep 与条件_小白贴:使用 grep 命令搜索多个字符串

    grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出.文内含长段代码可复制可往左滑,希望对大家有帮助! Grep的多条件搜索模式 grep支持三 ...

  8. Linux第七章:6.管道 | 与 grep命令查找

    一.管道 1.管道符号: | 2.管道的作用:管道的作用是将 前面命令的输出 作为后面命令的输入 二.grep 查找命令 1.grep是查找指令,支持模糊搜索 2.grep选项: | grep -n ...

  9. linux grep命令例子,详解linux grep命令

    本文介绍了linux grep命令,具体如下: 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regu ...

最新文章

  1. C primer plus 练习题 第三章
  2. vue 富文本存储_Vue富文本编辑器
  3. 对 jiffies 溢出、回绕及 time_after 宏的理解
  4. 快速使用wordpress
  5. hybrid app、web app与native app工具
  6. 文档怎么添加云服务器,如何添加云服务器地址
  7. 是否同一棵二叉搜索树(c语言实现)
  8. 哪个专业学python语言_想学Python编程?你真的适合吗?
  9. COLING 2020 | 一种从科学文献中提取关键词的基于自蒸馏的联合学习方法
  10. RS报内存错误XQE-ROL-0183
  11. pgadmin3连接mysql_postgresql – pgAdmin III:拒绝访问数据库
  12. 微信小程序使用webview打开pdf文档及显示网页内容
  13. [读书]《罗辑思维》第一季、第二季推荐书籍清单
  14. reset按钮失效,不能清空输入框
  15. 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
  16. sql 中判断身份证男女等
  17. 小区物业专属公众号管理办法
  18. STLINK下载程序出现cannot access target. shutting down debug session问题解决的一般步骤
  19. 从FrameDebugger看Unity渲染
  20. 【 58沈剑 架构师之路】究竟啥才是互联网架构“高并发”

热门文章

  1. php中的数据结构详解
  2. html css简单的文章展示
  3. 聊城大学计算机学院操作系统,聊城大学计算机学院操作系统试题1.doc
  4. MVP模式的Android 调用系统拍照,相册,剪裁,适配到7.0,修复拍照图片旋转问题
  5. 科比再发声谴责斯特林:他不该再当快船老板
  6. 老中医的偏方(看了不白看)
  7. sprintf 函数详解
  8. 【Rstudio】出现的错误:Error in `vec_as_location()`: `...` must be empty.
  9. docker镜像打包上传
  10. 安装并配置 FreeNAS 详细过程