最近公司官網很不穩定,於是有乙個需求,統計在apache訪問日誌下面的ip個數。
這個實現起來其實也就一條awk命令,可以這樣寫:
awk對檔案進行流處理,每次讀取一行。$1就是ip,count[i]++是將ip作為乙個陣列的下標,並且使得統計這個ip所對應的陣列元素自增1.end後面的語句是列印結果,只執行一次。
這裡用python也可以實現相同功能,並且更為靈活,體現在可以根據不同的正則匹配不同的內容,而且用字典key-value(key為ip,value為個數),比awk更為容易理解。統計哪個檔案也可以作為引數輸入到這個指令碼。
函式式程式設計
test()物件導向程式設計
#!/usr/bin/env python
import re
import sys
class
counts
(object):
def__init__
(self, patt):
self.patt = patt
self.db = {}
defcountpatt
(self,fname):
with file(fname) as f:
for eachline in f:
m = re.search(self.patt,eachline)
if m is
notnone:
dbkey = m.group()
self.db[dbkey] = self.db.get(dbkey,0) + 1
return self.db
deftest
(): countip = counts('\d\.\d\.\d\.\d')
print countip.countpatt(sys.argv[1])
countbrowsers = counts('firefox|chrome')
print countbrowsers.countpatt(sys.argv[1])
if __name__=='__main__':
test()
統計單詞個數
輸入 檔名稱 sum123.cpp 作 者 林海雲 完成日期 2014年12月16日 版 本 號 v2.0 問題描述 統計各陣列中單詞的個數 程式輸入 程式輸出 統計結果 include includeusing namespace std int pwordnum char str int mai...
字元個數統計
描述 編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內 0 127 不在範圍內的不作統計。知識點字串,函式,指標 執行時間限制 10m記憶體限制 128輸入 輸入n個字元,字元在acsii碼範圍內 0 127 輸出輸出字元的個數。樣例輸入 abc樣例輸出 3 include u...
字元個數統計
編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內 0 127 不在範圍內的不作統計。時間限制 1秒空間限制 32768k 輸入描述 輸入n個字元,字元在acsii碼範圍內。輸出描述 輸出範圍在 0 127 字元的個數。輸入例子 abc 輸出例子 3 解題的思路 1 使用for迴...