python日志統計_python試用-日志統計

最近兩天嘗試用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代表該位置的字符串類型

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537140.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537140.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537140.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring AOP兩種使用方式以及如何使用解析

AOP是一種面向切面編程思想,也是面向對象設計(OOP)的一種延伸。 在Spring實現AOP有兩種實現方式,一種是采用JDK動態代理實現,另外一種就是采用CGLIB代理實現,Spring是如何實現的在上篇已經講到了Spring Be…

如何用python生成可執行程序必須經過_python怎么生成可執行文件

.py文件:對于開源項目或62616964757a686964616fe58685e5aeb931333363393664者源碼沒那么重要的,直接提供源碼,需要使用者自行安裝Python并且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的).pyc文件:有些公司或個人因為機…

Jmeter 老司機帶你一小時學會Jmeter

Jmeter的安裝 官網下載地址:http://jmeter.apache.org/download_jmeter.cgi 作為Java應用,是需要JDK環境的,因此需要下載安裝JAVA,并且作必要的的環境變量配置。 一、bin目錄 examples:    目錄中有CSV樣例 jmeter.bat/jmeter…

MongoDB位運算基本使用以及位運算應用場景

最近在公司業務上用到了二進制匹配數據,但是MongoDB進行二進制運算(Bitwise)沒用過,網上博客文章少,所以就上官網看API,因此記錄一下,順便在普及一下使用二進制位運算的一些應用。 在MongoDB的…

好用的下拉第三方——nicespinner

1.簡介 GitHub地址:https://github.com/arcadefire/nice-spinner Gradle中添加: allprojects {repositories {...maven { url "https://jitpack.io" }} }dependencies {implementation com.github.arcadefire:nice-spinner:1.3.7 }2.使用 xml文…

Mybatis配置文件參數定義

官網有時候進不去,所以就記錄一下Mybatis的配置文件的各項參數定義,大家也可以上官網查詢,官方文檔,進不進的去看各自的緣分了 properties 定義配置,在這里配置的屬性可以在整個配置文件使用;可以加載指定…

python和java后期發展_Python與java的發展前景誰最大

Python和Java是目前IT行業內兩大編程語言,很多人都喜歡拿來比較,一個是后起之秀,潛力無限;一個是行業經典,成熟穩定。對于許多想從事IT行業的同學來說,這兩門語言真的很難抉擇。那么,Python和Ja…

JDK源碼學習筆記——Enum枚舉使用及原理

一、為什么使用枚舉 什么時候應該使用枚舉呢?每當需要一組固定的常量的時候,如一周的天數、一年四季等。或者是在我們編譯前就知道其包含的所有值的集合。 利用 public final static 完全可以實現的功能,為什么要使用枚舉? public…

Mybatis源碼日志模塊分析

看源碼需要先下載源碼,可以去Mybatis的github上的倉庫進行下載,Mybatis 這次就先整理一下日志這一塊的源碼分析,這塊相對來說比較簡單而且這個模塊是Mybatis的基礎模塊。 之前的文章有談到過Java的日志實現,大家也可以參考一下&…

python手機端給電腦端發送數據_期貨交易軟件有哪些比較好用?分手機端和電腦端...

一、電腦端交易軟件期貨電腦端交易軟件目前市場上用的最多的是文華財經和博易大師,這兩個軟件都是免費交易使用的。從投資者使用角度來看,目前電腦端文華財經的評價比博易大師高一些。當然每個投資者有自己的使用習慣,博易大師也有自己優點&a…

Find the Difference(leetcode389)

2019獨角獸企業重金招聘Python工程師標準>>> Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s and then add one more letter at a random position. Find the letter that was added in …

Mybatis源碼之數據源模塊分析

先來看看java純jdbc查詢數據的示例: try {//加載對應的驅動類Class.forName("com.mysql.cj.jdbc.Driver");//創建連接Connection connection DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?serverTimezoneUTC", "roo…

reactnative 獲取定位_[RN] React Native 獲取地理位置

import React, {Component} from react;import {StyleSheet, Text, View}from react-native;exportdefault classTestGeo extends Component {state{longitude:,//經度latitude: ,//緯度city: ,district:,street:,position:,//位置名稱};componentWillMount () >{this.getPo…

第二沖刺階段第三天

查閱資料,修改控件界面轉載于:https://www.cnblogs.com/gyy0/p/10066452.html

Mybatis源碼之緩存模塊分析

緩存這個東西在很多應用中都能看到它們的身影,這次就講講在Mybatis中的緩存是怎么應用的,雖然說吧Mybatis中的緩存基本不怎么用,用的更多是第三方組件redis、MongoDB、MemCache等等。 Mybatis的緩存是基于Map實現的,從緩存中讀寫…

Mybatis源碼之核心流程分析

終于談到了Mybatis最核心的東西了,最核心的就是通過配置XML文件或注解中的SQL,直接調用接口就能執行配置好的SQL語句并封裝成對應的返回類型的數據。 先看一下Mybatis使用示例: //創建Builder對象 SqlSessionFactoryBuilder builder new S…

mimakatz用法_兩步完成利用procdump64+mimikatz獲取win用戶密碼

使用procdump64mimikatz可實現從內存中獲取明文密碼工具鏈接:https://pan.baidu.com/s/1gNc9qLcNSNBohIVrAiqShw 密碼:fc38首先得先獲取到內存文件lsass.exe進程, 它用于本地安全和登陸策略,一般在進程管理器中能看到, 比如這樣1.導出lsass.exeprocdump6…

ios app提交之前需要哪幾個證書

1、遇到的問題 一款App在別人的機器上開發和發布,現在迭代更新和開發需要在一臺新mac機上開發和發布。(使用同一個開發者賬號)問題: 1.在新mac機器上開發并導入真機測試,是不是需要從別人的機器上面導處開發者證書、開…

Mybatis源碼之與Spring集成包

這次講講Mybatis與Spring的整合&#xff0c;作為兩款優秀的開源框架&#xff0c;被大眾廣泛使用&#xff0c;自然是需要強強聯合的。 使用示例 先看一下怎么使用&#xff0c;首先需要引用這兩款框架的jar包&#xff1a; <dependency>//spring-webmvc會自動去引入其他S…

hadoop主節點切換_hadoop2.0 HA的主備自動切換

在《hadoop2.0 QJM方式的HA的配置》一文中介紹了HA的配置&#xff0c;是通過手工進行主備切換的。本文在這基礎上&#xff0c;繼續介紹HA的主備自動切換(automatic failover)的配置。自動切換是通過配置zookeeper來實現的&#xff0c;關于zookeeper的安裝和配置&#xff0c;在這…