需求: 服務端有應用訪問日誌,需要統計某一個API,訪問top N的通道。 統計思路: 1、篩選/過濾待統計API; 2、分割,獲取待統計具體欄位; 3、計數; 4、按照計數結果降序排序; 5、截取top N. 最終命令如下: 各個命令詳細用法見下文: awk awk是一種編程語言,用於Linux/ ...
- 需求:
服務端有應用訪問日誌,需要統計某一個API,訪問top N的通道。
- 統計思路:
1、篩選/過濾待統計API;
2、分割,獲取待統計具體欄位;
3、計數;
4、按照計數結果降序排序;
5、截取top N.
- 最終命令如下:
grep "API name" access.log | awk -F'{' '{print $4}' | awk -F',' '{print $5}' | sort -r | uniq -c | sort -rn | head N
各個命令詳細用法見下文:
awk
awk是一種編程語言,用於Linux/unix下對文本和數據進行處理。awk非常強大,這裡只列出這次使用到的皮毛。
- 語法
awk [options] patern語句塊
- 常用選項
- -Ffs,fs指定分隔符,可以是字元串或者正則表達式;
- print $N,列印第N個字元。
- -Ffs,fs指定分隔符,可以是字元串或者正則表達式;
sort
sort:將文件進行排序並且將排序結果標準輸出
- 語法
sort (選項) (參數)
- 參數
- 文件:指定待排序的文件列表
- 選項
- -r:以降序排序,預設是升序;
- -n:依照數值的大小排序,預設是ASCII;
- -t<分隔字元>:指定排序時所用的欄位分隔字元;
- -k:指定排序的欄位;
- -u/uniq:忽略相同行;
- -o:排序結果輸出文件;
- -r:以降序排序,預設是升序;
uniq
uniq:統計或者刪除文件中的重覆行,一般與sort命令結合使用
- 語法
uniq (選項) (參數)
- 參數
- 輸入文件,預設標準輸入
- 輸出文件,預設標準輸出
- 輸入文件,預設標準輸入
- 選項
- -c/--count:統計重覆行數;
- -d/--repreated:僅顯示重覆出現的行列;
- -u/--unique:僅顯示出現一次的列;
- -f<欄位>或--skip-fields=<欄位>:忽略比較指定的欄位;
- -s<字元位置>或--skip-chars=<字元位置>:忽略比較指定的字元;
- -w<字元位置>或--check-chars=<字元位置>:指定要比較的字元。
- -c/--count:統計重覆行數;
head
head:預設顯示文件開頭10行。
- 語法
head (選項) (參數)
- 參數
- 文件列表
- 文件列表
- 選項
- -n<數字>:指定顯示行數;
- -c<數字>:指定顯示字元數;
- -n<數字>:指定顯示行數;