linux下日志提取总结
在项目上线一段时间后,产品需要知道项目的一些指标,开发的时候如果没有埋点,就只能通过日志进行统计了。所以开发人员也需要了解一些日志提取的方法。
涉及到的知识:linux,shell,正则表达式等
- ##linux 基本命令
####grep/zgrep grep命令是linux的基本命令,用来提取匹配的文本;zgrep是作用于压缩文件的对应命令; -o 仅提取匹配的文字部分 -c 匹配成功的数目
####sort
sort命令是帮助我们依据不同的数据类型进行排序;sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
-u 输出中除去重复行
####wc wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 -l 将每个文件的行数及文件名输出到屏幕上
-
##正则表达式
grep -o 'userId=[0-9]\+'
-
##linux管道 管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.
zgrep 'example' catalina.out.2014-08-13.gz | grep -o 'userId=[0-9]\+' | sort -u | uniq | wc -l
-
##shell 脚本
#!/bin/bash echo "example" for i in {3..14} do if [ $i -lt 10 ]; then zgrep 'example' catalina.out.2014-08-0$i.gz | grep -o 'userId=[0-9]\+' | sort -u | uniq | wc -l else zgrep 'example' catalina.out.2014-08-$i.gz | grep -o 'userId=[0-9]\+' | sort -u | uniq | wc -l fi done