美文网首页
shell脚本统计服务器日志文件信息

shell脚本统计服务器日志文件信息

作者: whisperoy | 来源:发表于2018-10-11 17:32 被阅读0次

    有段时间没有接触shell,对命令有些生疏,今天接到统计日志信息的任务,浪费了不少时间,决定还是记录一哈

    根据某一列进行去重排序统计并对另一列求和

    示例:

          4  115223

          1  115277

          1  115277

          2  115223

    目标:

          115223  6

          115277  2

    shell脚本:

    grep -v '^$' count.log

    | awk -F ' ' '{sum[$2]+=$1;} END {for(c in sum){print c,sum[c];}}' 

    | sort -n -r -k 2 >> sum.log

    解析:

    1.grep -v  '^$' 对log中的空行过滤

    2.awk

    -F列分隔符

    '{sum[$2]+=$1;} END {for(c in sum){print c,sum[c];}}' 根据列进行操作

    sum[$2]+=$1  根据第二列对第一列求和

    END 求和完毕进行输出

    for(c in sum){print c,sum[c];}  使用for循环输出

    3.sort 进行排序

    -n  根据数值大小排序

    -r  从大到小排序,不写则默认从小到大

    -k  根据第几列排序,2根据第二列

    获取日志文件的信息

    示例:

    2018-09-12 15:20:55.615 [INFO] [com.xxx.service.impl.xxx][192] xxx: xxx:113740 | returnCode:0

    2018-09-12 15:27:36.870 [INFO] [com.xxx.service.impl.xxx][192] xxx: xxx:113740 | returnCode:0

    2018-09-12 15:27:40.688 [INFO] [com.xxx.service.impl.xxx][192] xxx: xxx:113740 | returnCode:0

    2018-09-12 15:27:43.017 [INFO] [com.xxxservice.impl.xxx][192] xxx: xxx:113740 | returnCode:0

    目标:

    113740    4

    shell脚本:

    file_name="xxx*";

    grep 'returnCode:0' ../$file_name

    | awk -F ':' '{print $6}'

    | awk -F ' | '  '{print $1}'

    | uniq -c

    >> count.log

    解析:

    1.file_name 文件名匹配

    2.grep 'returnCode:0' ../$file_name

    根据文件名匹配所有结果码为成功的行

    3.awk -F ':' '{print $6}'

    根据:分隔符获取第六列

    4.awk -F ' | '  '{print $1}'

    根据 | 分隔符获取第六列中的第一列

    5.  uniq -c

    去重并累加

    6. >> count.log

    把结果写到log

    相关文章

      网友评论

          本文标题:shell脚本统计服务器日志文件信息

          本文链接:https://www.haomeiwen.com/subject/eizbaftx.html