高效查看分析Log命令


tail

  • 实时查看日志
tail -f data.log
  • 查询日志尾部最后10行的日志
tail -n 10 data.log tail -10 data.log
  • 查询第100行之后的所有日志
tail -n +100 data.log
  • 循环实时查看最后10行记录
tail -f 10 data.log
  • 实时查看有关键词的log记录
tail -f data.log | grep 关键词
  • 实时查看有关键词的log记录,关键字文字标红
tail -f data.log | grep 关键词 --color
  • 实时查看有关键词的log记录,关键字文字标红,上下扩展两行
tail -f data.log | grep 关键词 --color -C2
 类似参数说明: -A: 显示匹配行及前面多少行, 如: -A3, 则表示显示匹配行及前3行 -B: 显示匹配行及后面多少行, 如: -B3, 则表示显示匹配行及后3行 -C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行

head

  • 查询日志文件中的头10行日志
head -n 10 data.log head -10 data.log
  • 查询日志文件除了最后10行的其他所有日志
head -n -10 data.log
 

sed

  • 按照行号
sed -n '5,10p' data.log
  • 按照时间段
sed -n '/2021-06-19 01:39:08/, /2021-06-19 01:39:09/p' data.log
  • 输出demo.log中的某个日期中的ERROR的行
sed -n '/^2011-08-23.*ERROR/p' demo.log

cat

  • 得到关键日志的行号
cat -n data.log | grep "error"

grep

  • 在文件demo.log中查找所有包行INFO的行
grep 'INFO' demo.log
  • 忽略大小写
grep -i 'INFO' demo.log
  • 提取只包含关键词的内容
grep -o 'id\":60095021[0-9]' data.log #-o选项只提取id":60095021x的内容(而不是一整行),并输出到屏幕上
  • 输出文件demo.log中查找所有包行ERROR的行的数量
grep -c 'ERROR' demo.log
  • 查找不含"ERROR"的行
grep -v 'ERROR' demo.log
  • 在文件demo.log中查找所有包行INFO的行,只显示前10行
grep 'INFO' demo.log|head -10
  • 在文件demo.log中查找所有包行INFO的行,只显示后10行
grep 'INFO' demo.log|tail -10
  • 查看有关键词的log记录,关键字文字标红
grep 关键词 data.log --color
  • 查看有关键词的log记录,关键字文字标红,上下扩展两行
grep 关键词 data.log --color -C2
 

awk

  • 每行按空格或TAB分割,输出文本中的1、4项
awk '{print $1,$4}' data.log
  • 使用","分割
awk -F , '{print $1,$4}' data.log awk 'BEGIN{FS=","} {print $1,$4}' data.log
  • 使用多个分隔符。先使用空格分割,然后对分割结果再使用","分割
awk -F ' ,' '{print $1,$4}' data.log
  • 输出包含关键词 的行
awk '/关键词/ ' log.txt