Linux文本分析工具

Author Avatar
WoodyXiong 1月 20, 2019
  • 在其它设备中阅读本文章

前言

有次有幸看到一个十年工作经验的师姐分析我的项目产生的日志,用五六个十分简单的命令组合使用就可以将几兆的日志文件分析到位,佩服的五体投地。

作为后端工程师,经常需要对日志等信息进行分析。当然可以用php/python等语言写脚本对日志进行分析;与此同时,如果你懂得一些Linux的文本分析工具并进行组合使用,一行命令就可以搞定。

本文汇总一些简单的Linux文本分析命令,以便将来查阅。

练手示例文件

wget https://raw.githubusercontent.com/woodyxiong/SmartEye/1ef49140fadd2a4e502a57972a90f7befd57bab9/User/Runtime/Logs/Home/16_08_29.log;mv 16_08_29.log test.log

cat 取出文件内容

cat [-AbeEnstTuv] [–help] [–version] fileName

  • cat -n fileName 取出行号
  • cat -b fileName 也是取出行号,空白行没有行号

grep 搜索

grep [-abcEFGhHilLnqrsvVwxy][-A<显示之后列数>][-B<显示之前列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]

  • cat test.log | grep -A 5 -B 2 /user.php/Home/login/checklogin.html 显示查找的目标后5行和前2行的内容
  • cat test.log | grep -i ‘end’ 无视大小写搜索
  • cat test.log | grep -v ‘end’ 反选

awk 分割字符串

awk -F ‘,’ ‘{print $1,$2}’,分割字符串,并输出第一列和第二列

  • awk -F ‘,’ ‘{print “逗号前:”$1,”逗号后:”$2}’ 将搜索结果拼接字符串
  • awk -F ‘,’ ‘$1<=1 {print $1,$2}’ 显示第一列小于1的
  • awk脚本的高级功能

uniq

sort 排序

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison] [文件]

  • sort 默认是按照string进行排序的
  • sort -n 按照数字进行排序 从小到大
  • sort -b 忽略空格
  • sort -r 倒序排序

wc 计算字数行数

wc [-clw][–help][–version][文件…]

  • cat test.log|wc -l 统计行数
  • cat test.log|wc -w 统计词数
  • cat test.log|wc -c 统计Bytes数