查日志常见技巧

tail

tail  -n  10  test.log   查询日志尾部最后10行的日志;

tail -n +10 test.log    查询10行之后的所有日志;

head

head -n 10  test.log   查询日志文件中的头10行日志;

head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

cat

cat -n test.log | grep 'error' 查询日志中含有某个关键字的信息,显示出行号

less

命令格式:less [参数] 文件

命令参数:

-b <缓冲区大小> 设置缓冲区的大小

-e  当文件显示结束后,自动离开

-f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g  只标志最后搜索的关键词

-i  忽略搜索时的大小写

-m  显示类似more命令的百分比

-N  显示每行的行号

-o <文件名> 将less 输出的内容在指定文件中保存起来

-Q  不使用警告音

-s  显示连续空行为一行

-S  行过长时间将超出部分舍弃

-x <数字> 将“tab”键显示为规定的数字空格

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

b  向后翻一页

d  向后翻半页

h  显示帮助界面

Q  退出less 命令

u  向前滚动半页

y  向前滚动一行

空格键 滚动一行

回车键 滚动一页

[pagedown]: 向下翻动一页

[pageup]:   向上翻动一页

附加:

1.全屏导航

ctrl + F - 向前移动一屏

ctrl + B - 向后移动一屏

ctrl + D - 向前移动半屏

ctrl + U - 向后移动半屏

2.单行导航

j - 向前移动一行

k - 向后移动一行 

3.其它导航

G - 移动到最后一行

g - 移动到第一行

q / ZZ - 退出 less 命令

4.其它有用的命令

v - 使用配置的编辑器编辑当前文件

h - 显示 less 的帮助文档

&pattern - 仅显示匹配模式的行,而不是整个文件

5.标记导航

当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:

ma - 使用 a 标记文本的当前位置

'a - 导航到标记 a 处

6.查找

more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找,按 q(quit)或者ZZ离开

场景

场景1: 按行号查看---过滤出关键字附近的日志

因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.

我是这样做的,首先: cat -n test.log | grep "地形"  得到关键日志的行号

如得到"地形"关键字所在的行号是102行. 此时如果我想查看这个关键字前10行和后10行的日志:

cat -n test.log |tail -n +92|head -n 20

tail -n +92表示查询92行之后的日志

head -n 20 则表示在前面的查询结果里再查前20条记录

场景2:查看指定时间段内的日志

sed -n '/2017-02-23 10:00:00/,/2017-02-23 10:06:23/p' test.log 
sed -n '/2017-02-23 10:00:/,/2017-02-23 10:06:/p' test.log

这个需要注意的地方是10:00:00或者10:00必须出现过. 
如果没有任何日志出现.请先查看是否存在

grep "2017-02-23 10:00" test.log

场景3:查看日志中特定字符的匹配数目

grep "abcd" test.log | wc -l

场景4:实时查看日志

tail -f test.log

场景5:查询最后20行,并查找关键字“结果”

tail -n 20 test.log | grep '结果'

场景6:查询最后20行,并查找关键字“结果”,文字标红

tail -n 20 test.log | grep '结果' --color

场景7:查询最后20行,并查找关键字“结果”,文字标红,上下扩展两行

tail -n 20 test.log | grep '结果' --color -a2

场景8:分页查看,使用空格翻页(使用more/less)

cat -n test.log | grep "error" | more

场景9:日志文件超大时,使用vim查找

vim test.log 打开文件

ctrl + g 移动至文件末尾

:? com.fm.fdata 从最后往上查找关键字,点N往上

场景10:浏览多个文件

less test2.log test.log

输出:

1  ifconfig
    2  ping www.baidu.com
    3  ifconfig
    4  //10.128.161.108/share
    5  10.128.161.108/share
    6  ssh
    7  keygen
    8  trsa
    9  ssh
   10  .ssh/


 test2.log (file 1 of 2) (END) - Next: test.log

输入 :n后,切换到 test.log

输入 :p 后,切换到test2.log

ps:当正在浏览一个文件时,也可以使用 :e命令 打开另一个文件。

命令:

less file1
:e file2

场景11 复杂查询截取排序

less catalina.out | grep -B 3 "getRelatedTTSDomainPrefixs" | grep "QMQ消息处理异常,消息体" | awk -F "orderNo" '{print $2}' | awk -F "id" '{print $1}' | awk -F ":" '{print $2}' | awk -F "," '{print $1}' | awk -F "\"" '{print $2}' | awk -F "\\" '{print $1}' | sort | uniq -c | less

 

原文地址:https://www.cnblogs.com/jlustone/p/7716124.html