根据字符串查询日志中关键词出现的位置及前后n行内容:
cat -n 日志文件| grep '错误的关键信息提示' -C n
例:cat -n test.log | grep 'keyword' -C 10
查询日志中含有某个关键字的信息,显示出行号,查看日志中出现关键字 "keyword" 的前后10行内容
cat可替换成grep命令:cat -n 1.log | grep key 可以写为:grep -n key 1.log
cat -n test.log | grep 'keyword' -C 10 可写为:grep -n 'keyword' test.log -C 10
分解:
cat -n中, -n作用为显示行号,同理在grep命令中 -n同样适用;
grep -C 10中, -C作用为查询关键字前后行数,10为10行
从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000
# tail条件在前,限定从3000开始;head补充在后,显示1000行
显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000
# head条件在前,限定行数数量;tail补充在后,从1000开始
*注意两种方法的顺序(head在前限制行数,在后补充行数,tail不受影响)
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
tail -f catalina.out |grep -C 10 ERROR
该命令实时读取日志文件,把出现“ERROR”行的日志前后各10行日志打印出来。
也可以把日志记录到文本中:
tail -f catalina.out |grep -C 10 ERROR >>error.log(实时获取,若日志太大读取会很慢)
tailf -n 400 catalina.out |grep -C 10 ERROR >>error.log(同样实时读取,但只获取最新400行,如日志太大建议用此命令)
用sed命令
查看某段时间内的日志: sed -n '/起始时间/,/结束时间/p' 日志文件,
查看某段时间内的关键字日志:sed -n '/起始时间/,/结束时间/p' 日志文件| grep ‘keyword’
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
#!没有反应# sed -n ‘/2018-06-21 14:30:20/,/2018-06-21 16:12:00/p’ catalina.out | grep ‘keyword’
这样可以精确地截取出来某个时间段包含关键字的日志。
最快的方式是让光标停留在想要查找的单词的任意一个字母上面, 然后输入Shift + * ,即可快速选中该单词,并且可以通过 n 或 N 进行上一个或下一个的匹配。
单个文件可以使用vi或vim编辑器打开日志文件,符号 / 后面跟关键字向下查找(/keyword),符号 ? 后面跟关键字向上查找(?keyword),按n查找下一个,按N查找上一个。看到报错后,直接把日志截个图给开发:输入 tail -n 10000 logfile.out >/abc.txt
截10000行代码,保存在根目录下的abc文件中。
多个文件可以使用grep命令,比如 grep -n ERROR /var/log/error2021-*.log。会把匹配到ERROR这个关键字的行和所在的日志文件直接输出到屏幕。
注:该文章为作者本人平时收集相关资料,将大量查询日志相关信息加以简要提取,分析命令作用并加以文字说明,欢迎查阅交流!