2016-03-21 35 views
0

我需要分析nginx日誌的幫助。日誌的示例:按條件選擇行並用一行命令計數

10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=100&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
11.11.11.11 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=10&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
12.12.12.12 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
13.13.13.13 - - [21/Mar/2016:00:00:00 +0000] "GET /example HTTP/1.1" 200 769 "-" "" "1.1.1.1" 

是否有可能與計數選擇含per_page參數,這個參數等於或大於100的所有uniq的IP地址?

因此,輸出可以是任何格式:

10.10.10.10 - 2 # ip 10.10.10.10 was found twice 
12.12.12.12 - 1 

是否有可能得到一個命令?

回答

1
$ awk '/per_page=[0-9]{3}/{cnt[$1]++} END{for (ip in cnt) print ip, cnt[ip]}' file 
12.12.12.12 1 
10.10.10.10 2 

這絕對是基本的AWK - 讀的書有效AWK編程,第4版,由阿諾德·羅賓斯,如果你要在UNIX其他任何文本文件處理。

+0

空結果:( –

+0

然後你的真實輸入文件不是如圖所示,或者你的awk是壞的或者至少是非POSIX的,如果你需要幫助,只需說出'空結果:('沒有多謝對於嘗試或任何顯而易見的嘗試來自己調試問題,無需介意實際嘗試自己解決它,是不是得到它的方式。 –

+0

這對我來說很奇怪:)我創建了一個示例文本文件,並與我的第一個示例運行然後我從實際的日誌文件中添加了一行,然後再次運行命令 - 所有工作都正常了!但是當我用真實文件運行這個命令時 - 它沒有顯示:( –