Linux grep 匹配多个关键字

  Linux grep 命令非常常用,经常用于匹配文本字符。基本语法如下:

grep 'keyword'fileName.txt

  如上所示,Linux grep 命令用于查找文件里符合指定条件的字符串,如果发现某文件的内容符合所指定的范本样式,则grep 指令会把含有范本样式的那一行显示出来。grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。

  《Linux grep查询关键词首次或者最近一次出现的地方》介绍了如何取出文件中关键词keyword首次或者最近出现的记录。但是,一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?

  更多关于Linux命令的传送门——《五分钟扫盲:25个工作中常用的Linux命令》。

grep ‘keyword’

  先介绍最普通的使用方式,用于匹配文件中包含一个 keyword 的记录:

grep 'keyword' fileName.txt

  即匹配fileName.txt 中包含关键词keyword的记录。下面开始分析怎么实现匹配多个关键字。

grep -E 匹配任意一个关键字–或关系

grep -E "keyword1|keyword2|keyword3" fileName.txt

  匹配 fileName.txt 中包含 keyword1、keyword2 或 keyword3 任意一个关键词的记录,只要满足其中任意条件就会被匹配。-E 或 --extended-regexp : 以extended语法的正则表达式查询关键词。-E是核心,千万不要省略。

同时匹配多个关键字–与关系

  使用管道符连接多个 grep ,实现多个关键字的与关系检索:

grep keyword1 file.txt | grep keyword2 |grep keyword3

必须同时满足三个条件(keyword1、keyword2和keyword3)才匹配。

夯实基础

  场景描述: 系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)

  解决办法

grep --color=auto '2022-12-03 15:32:11' fileName.log | head -3

  查看符合条件的日志记录,高亮展示关键词,只打印前三次出现的记录。

Reference

posted @ 2022-12-03 16:37  楼兰胡杨  阅读(9945)  评论(0编辑  收藏  举报