tail
用于输出文件中的尾部内容,实际应用如下:
// 显示文件倒数2行数据,并实时刷新新日志
tail -2f test.log
// 执行效果如下:
li 54
li 75
// 如果你需要停止,按Ctrl+C退出
// 假如查看的日志,实时刷新的日志量非常多的话,慎用!
head
跟tail是相反的,tail是看后多少行日志;例子如下:
// 查询日志文件中的头10行日志;
head -n 10 test.log
//查询日志文件除了最后10行的其他所有日志;
head -n -10 test.log
cat
命令用于连接文件并打印到标准输出设备上
// 显示文件全部内容
cat demo.log
// 由于会显示整个文件的内容,所以如果文件大的话,慎用!
// 查询关键字的日志 得到关键日志的行号
cat -n test.log |grep "debug"
// 选择关键字所在的中间一行
cat -n test.log |tail -n +92|head -n 20
// 然后查看这个关键字前10行和后10行的日志:
// 表示查询92行之后的日志
tail -n +92
// 20 则表示在前面的查询结果里再查前20条记录
head -n 20
// 分页打印,通过点击空格键翻页
cat -n test.log |grep "debug" |more
// 使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析,例如:
cat -n test.log |grep "debug" >debug.txt
tac
关于cat
命令,还有一个与之类似但写法相反的命令:tac
。写法就是cat
反过来写
功能也是相反的,是从后往前显示内容。示例如下:
tac demo.log
more
类似cat
,不过会以一页一页的形式显示,按空白键space
就往下一页显示,按b
键就会往回一页显示
more demo.log
// 执行结果(文件内容少的话,会直接显示全部,效果跟cat一样):
line1 123456 aa
line2 123456 bb
line3 123456 cc
--More--(15%)
less
less
与more
类似,但使用less
可以随意浏览文件(使用键盘上的上下箭头),而且less
在查看之前不会加载整个文件
less demo.log
// 执行结果(文件内容少的话,会直接显示全部,效果如下):
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
demo.log (END)
当使用less
命令查看日志时,还可以对关键字进行查找。命令如下:
// 使用斜杠(/)加关键字的形式,向后查找关键字,如查找关键字:123456
/123456
// 使用问号(?)加关键字的形式,向前查找关键字,如查找关键字:line3
?line3
// PS:跳转到后一个关键字快捷键: N; 跳转到前一个关键字:shift + N
grep
grep
指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,grep
指令会把含有范本样式的那一列显示出来
// 查询包含关键字<code>123456</code>的日志内容
grep "123456" demo.log
// 执行结果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查询包含关键字<code>123456</code>且包含<code>aa</code>的日志内容
grep "123456" demo.log | grep "aa"
// 执行结果
line1 123456 aa
// 查询不包含<code>aa</code>的日志内容
grep -v "aa" demo.log
// 执行结果
line2 123456 bb
line3 123456 cc
line4 123456 dd
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
// 查询包含关键字<code>123456</code>但不包含<code>aa</code>的日志内容
grep "123456" demo.log | grep -v "aa"
// 执行结果
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查询包含关键字<code>123456</code>或<code>aa</code>的日志内容
grep "123456\|aa" demo.log
或者
grep -E "123456|aa" demo.log
// 执行结果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
当你通过grep
查找关键字,但是还是有非常多匹配的结果时,可以组合前面的less
或more
实现分页显示,示例如下:
grep "123456" demo.log | less
grep "123456" demo.log | more
grep "123456\|aa" demo.log | less
grep "123456" demo.log | grep -v "aa" | less