有人在論壇 上問 將日誌格式化的方法,
剛好學python,就拿這個練手了:
09:55:54: error1 /tmp/error/log.3 50 times
mon jun 28 00:00:53 2009
09:55:54: error1 /tmp/error/log.3 50 times
09:56:09: error1 /tmp/error/log.14 50 times
10:56:12: error1 /tmp/error/log.14 100 times
10:56:23: error2 /tmp/error/log.5 50 times
11:56:26: error2 /tmp/error/log.1 50 times
11:56:27: error2 /tmp/error/log.5 100 times
mon jun 29 00:00:53 2009
15:56:29: error3 /tmp/error/log.1 100 times
15:56:32: error3 /tmp/error/log.1 150 times
16:56:33: error4 /tmp/error/log.6 50 times
16:56:36: error4 /tmp/error/log.6 100 times
16:56:40: error4 /tmp/error/log.12 50 times
mon jun 30 00:00:53 2009
格式化成:
2009|jun|28|10|error1|1
2009|jun|28|10|error2|1
2009|jun|29|16|error4|3
2009|jun|29|15|error3|2
python 源**:
#!/usr/bin/env python
import re
import sys
defformat_log(logf):
re_hour = re.compile(r'^/d/d:')
re_sp_split = re.compile(r'/s+')
#extract the day from time line
make_day =lambdad:d[4] + '|' + d[1] + '|' + d[2]
make_key =lambdad,c:d + '|' + c[0][0:2] + '|' + c[1]
cur_day = 'n/a|n/a|n/a'
log_cnt=dict()
forlineinlogf:
m = re_hour.match(line)
cols = re_sp_split.split(line)
iflen(cols) < 3: #not a valid log
continue
ifmisnotnone: #this is log line ,not date
key = make_key(cur_day, cols)
#date | hour | err_type
ifkeynotinlog_cnt:
log_cnt[key] = 1
else:
log_cnt[key] += 1
else:
iflen(cols) < 5: #not a valid log
continue
cur_day=make_day(cols)
sorted_key = log_cnt.keys()
sorted_key.sort()
forkeyinsorted_key:
print'%s|%d' % (key, log_cnt[key])
if__name__ == '__main__' :
format_log(sys.stdin)
python 比較易懂,這點比perl 要好多了。
上邊的**,即使不會python的人也能看懂60%
第乙個python程式
在之前學習了基本的python知識以後,我決定編寫自己的第乙個python程式。可汗學院公開課 全部 根據以上兩個內容為基礎,編寫乙個爬取 源 的python程式,中間一步步來,終極目標是實現 rss 那樣的新聞聚合功能。這個想法我已經想了快半個月了,可是一直遲遲沒有實現,正好趁這個機會。準備開始像...
第乙個Python程式
本節內容如下 python程式的乙個很大的特點就是簡潔,像編寫其他程式,輸出乙個 hello world 需要寫好幾行 什麼導入庫,呼叫輸出函式等等。然而,python的 hello world 在命令列輸出可以非常簡單,輸入乙個 hello world 回車,直接可以列印結果。實現步驟如下 1.開...
第乙個python程式
使用文字編輯器 python互動式命令列的方式寫程式 好處 一下子就能得到結果 缺點 沒法儲存 使用編輯器可以避免這一問題 1 sublimetext 免費使用,但不付費會出現提示框 2 notepad 免費,中文 備註 不能用word或windows自帶的記事本 編寫程式 1 必須以.py結尾 2...