1、基础知识
tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n +10 test.log 查询10行之后的所有日志;
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
2、场景一: 按行号查看---过滤出关键字附近的日志
因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.我是这样做的,首先: cat -n catalina.out |grep "5086493" 得到关键日志的行号
得到"5086493"关键字所在的行号是1389535行. 此时如果我想查看这个关键字前20行和后20行的日志:
cat -n catalina.out |tail -n +1389515|head -n 40
head -n 40 则表示在前面的查询结果里再查前40条记录
3、场景二: 按时间段查看---过滤出关键时间附近的日志
通常我们非常需要查找指定时间端的日志
sed -n '/2016-10-10 15:02:00/,/2016-10-10 15:04:00/p' catalina.out特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效.
关于日期打印,可以先 grep '2016-10-10 15:02:00' catalina.out 来确定日志中是否有该时间点,以确保上一步可以拿到日志
这个根据时间段查询日志是非常有用的命令.
4、其它
如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:(1)使用more和less命令, 如: cat -n catalina.out |grep "5086493" |more 这样就分页打印了,通过点击空格键翻页
cat -n catalina.out |grep "5086493" >5086493.txt
5、补充:linux 如何显示一个文件的某几行(中间几行)
【一】从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000
【二】显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000
*注意两种方法的顺序
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行