grep命令(全称:global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是linux根据搜索关键字打印所在行信息的命令,比如我们可以通过以下命令查看文件中包含指定关键字的行信息:
#从文件biz.log.2021-02-04中查找订单号“210204SHM004682D00006281”,并把结果输出到控制台 grep "210204SHM004682D00006281" ./biz.log.2021-02-04
执行结果如下:
grep命令详细介绍
ps命令的用法如下:
grep [options] [--color=auto] "查找字符串" filename
options表示命令参数,详细的参数列表如下:
-A<显示行数> 除了显示'查找字符串'那一行,还显示该行之后指定的行数(A表示after),如:显示'查找字符串'那行及后面的3行,grep -A3 "aa" ./other.log
-a 将binary文件以text文件的方式查找数据
-B<显示行数> 除了显示'查找字符串'那一行,还显示该行之前指定的行数(B表示before),如:显示'查找字符串'那行及前面的3行,grep -B3 "aa" ./other.log
-c 计算找到'查找字符串'的次数
-E 可以搜索多个关键字,如:grep -E "aa|bb" ./other.log
-e 可以搜索多个关键字,如:grep -e "aa" -e "bb" ./other.log
-i 忽略大小写
-n 输出行号
-r 明确要求搜索子目录
-v 反向输出,即输出不包含'查找字符串'的行
--color=auto 执行结果中的'查找字符串'信息高亮显示(可以简写成--color)
实例操作
1. 搜索多个关键字
#在文件other.log中搜索包含“aa”或“bb",关键字高亮显示(2种方式) grep -E "aa|bb" --color ./other.log grep -e "aa" -e "bb" --color ./other.log #在文件other.log中搜索既包含“aa”又包含“bb”(这里管道符有关键作用) grep "aa" ./other.log|grep "bb"
2. 搜索关键字所在行的前后n行
#搜索关键字“aa”所在行的前后3行(2种方式) grep -A3 -B3 "aa" ./other.log grep -C3 "aa" ./other.log
3. #搜索文件名中不包含数字,忽略子目录,文件中包含关键字20170706000100000000000023402625,关键字高亮显示
find ./* ! -name "*[0-9]*" | xargs grep --color "20170706000100000000000023402625"