Linux grep 命令非常常用,经常用于匹配文本字符。基本语法如下:
grep 'keyword'fileName.txt
如上所示,Linux grep 命令用于查找文件里符合指定条件的字符串,如果发现某文件的内容符合所指定的范本样式,则grep 指令会把含有范本样式的那一行显示出来。grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。
《Linux grep查询关键词首次或者最近一次出现的地方》介绍了如何取出文件中关键词keyword首次或者最近出现的记录。但是,一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?
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
查看符合条件的日志记录,高亮展示关键词,只打印前三次出现的记录。