最近两天尝试用python代替bash写Linux Shell脚本来统计日志。发现python写起来比bash更简单和容易阅读,发现不少惊喜。所以写了一个粗糙的脚本来统计日志。

目标

1、通过简单命令和脚本统计事件发生数

2、日志限定文本类型

假定环境

日志文件:1.log

test:aaa,1

test:bbc,1

test:bbc,2

test:bba,2

test:baa,3

test:baa,1

other1:xx,bb,3

other2:32

日志文件:2.log

test:ab,2

other3:123

统计脚本

log_static.py

统计脚本

1 #!/usr/bin/python2 importsys3 #1st arg for tag key4 key="test:"iflen(sys.argv)>2;elsesys.argv[1]5 #2nd arg for split signal6 split=","iflen(sys.argv)>3elsesys.argv[2]7 #3rd arg for static index8 stat_idx=0iflen(sys.argv)>4elseint(sys.argv[3])9 key_map={}10 #loop for read11 whileTrue:12 #reading line from piple13 line=sys.stdin.readline()14 line=line[:-1]ifline.endswith("\n")elseline15 iflen(line)==0:16 break17 #find current key to static18 cur_key=line.split(key)[1].split(split)[stat_idx]19 #update static20 key_map[cur_key]=key_map[cur_key]+1if(key_map.has_key(cur_key))else121 22 #sort the map23 result=sorted(key_map.items(),lambdax,y: cmp(y[1],x[1]))24 #print out25 forkey,valueinresult:26 print"%s,%s"%(key,value)

运行

添加执行权限:chmod + log_static.py

选择关键标签"test:",日志值分隔符为","

统计第一位发生次数:grep "test" *.log | ./log_static.py test: , 0 > 1.cvs

统计第二位发生次数:grep "test" *.log | ./log_static.py test: , 1 > 2.cvs

结果

统计文件:1.cvs

bbc,2

baa,2

ab,1

aaa,1

bba,1

统计文件:2.cvs

1,3

2,3

3,1

备注

#!/usr/bin/python              python库引用

import sys                  导入系统组建

sys.argv                   调用参数

target = value 1 if (statement) else value2 相当于target = statement ? value 1 : value2

python的通过缩进判断分块,没有结束符号

while (statement) True:

#code here

设置arr = [1,2,3,4],arr[:-2]筛选变为[1,2]  除了筛选还可以赋值arr[0 for x in range(0, 10)]

lambda x,y : cmp(y[1], x[1])        lambda运算,表述传入参数x,y 返回y[1]和x[1]的比较值(倒序)

for x,y in list                表示枚举list的每一项(item),其中x取值item[0],y取值item[1]

print "%s,%s" % (x,y)           格式化打印,%s代表该位置的字符串类型

python日志统计_python试用-日志统计相关推荐

  1. python日志模块_Python之日志处理(logging模块)

    转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...

  2. python日志处理_Python之日志处理(logging模块)

    转发:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 loggi ...

  3. python多进程打印输出_python 多进程日志 logging

    python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录. 但是 python 中logging 并不支持多进程,所以会遇到不少麻烦. 以 ...

  4. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

  5. python大型项目中的日志模块_Python中日志模块的使用

    前言 程序和脚本往往是无人值守运行的,一旦发生问题,就需要我们去追溯当时的情况来定位问题的原因. 这便需要我们在程序和脚本中引入日志的功能. 相比于print信息,使用logging日志有以下优点 可 ...

  6. python生物数据分析_Python学生物统计-数据可视化-学习笔记5

    5.1 作图的重要性 在分析一个数据之前, 我们首先要对数据进行检查, 在统计上看一下汇总统计, 比如最大值, 最小值, 中位数, 平均值, 方差, 标准差, 变异系数等等.直方图, 看一下数据的分布 ...

  7. python logging日志分割_python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  8. python哈姆雷特词频统计_python—文本词频统计 哈姆雷特 txt 下载

    原博文 2020-05-13 15:49 − 文本词频统计 -- Hamlet Hamlet下载 链接:https://pan.baidu.com/s/1Is2mBAED57i6nI38lcnXAA ...

  9. python英文字符频率统计_Python中怎样统计英文文本中的字母频次?

    关于文本频次统计.先不要考虑如何用python实现的问题. 我捋一捋自己的思路. 频次统计有几种呢?有时我们关注个别字母和汉字的出现频率,也有时候我们更多会关注个别单词或词语的出现频率. 针对这两种常 ...

最新文章

  1. jenkins使用Git为源码管理(windows master linux slave)
  2. 2、SpringBoot整合JDBC
  3. Xcode9学习笔记69 - 创建各种类型的文件(文本、数组、字典、图片)
  4. A quick presentation of the Visual Studio 2010 editions per role
  5. 加快Vue项目的开发速度
  6. Dos命令入侵局域网电脑
  7. 《人件》(Peopleware)文摘
  8. Chirp信号基础知识及matlab实现
  9. 数学建模:层次分析法实例以及代码
  10. Java中的class类和对象总结(思维导图)
  11. x264码率控制介绍、配置及应用
  12. 数据分析案例:超市数据分析
  13. TypeScript 简单使用
  14. linux中fstab文件_如何在Linux上写入fstab文件
  15. tidb和tbase的聚合函数算法
  16. android ksoap用法
  17. 3.4.10nbsp;孙正义
  18. MX 连接器服务器通信错误: service:jmx:rmi
  19. Spark 读取CSV文件为RDD
  20. 使用字节流和字符流对文件进行操作

热门文章

  1. 计算机考研百天,2015考研计算机专业复习百天周计划
  2. 中国电信学院c语言题库,电脑题库试题精编版.doc
  3. 怎樣制作线段动画_OPPO又开发布会!这两个PPT动画太炫了,荣获网友清一色好评...
  4. 单边指数信号的特点_今日股市分析:上证指数若能守住3400,蓄力反弹就有戏...
  5. Packet for query is too large(1767212 1048576)mysql在存储图片时提示图片过大
  6. antd 左右滑动_如何使用reactjs创建可滑动的侧边栏
  7. atomikosdatasourcebean mysql_SpringBoot2整合JTA组件实现多数据源事务管理
  8. java约瑟夫环pta上_cdoj525-猴子选大王 (约瑟夫环)
  9. python virtualenv conda_在vscode中启动conda虚拟环境的思路详解
  10. 东京战纪服务器维护中,东京战纪7月21维护公告 当前测试进度介绍