一:根据目录递归查询文件:
grep -rl keyword logPath # -r代表递归 -l 代表只显示文件名
二:日志查询:
场景1:按行号查看,并过滤出关键字附件的日志
由于grep只能匹配关键字,不能显示关键字上下的内容,所以先打出关键字的行号,再根据行号打出上下文。
- -根据关键字查询并打出行号
cat -n test.log |grep 'keyword'
-- 假设keyword信息在159行,为了查看前后10行的内容:
cat -n test.log |tail -n +149|head -n 20
tail -n +149表示查询149行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
场景2:按照日期查找日志
sed -n '/2017-07-17 16:13:21/,/2017-08-17 15:27:56/p' test.log
-- 查找18号的Error级别日志
sed -n '/^2017-08-18.*ERROR/p' store_info.log
如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:
(1)使用more和less命令, 如: cat -n test.log |grep "地形" |less less命令详解
(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:
cat -n test.log |grep 'keyword' >xxx.txt
场景3:count 找有几行匹配
grep -c 'ERROR' demo.log #输出文件demo.log中查找所有包行ERROR的行的数量
sed -n '/^2017-08-18.*ERROR/p' store_info.log