日誌統計中awk常見的運用

來源:互聯網
上載者:User

標籤:awk 日誌

前言:首先awk是一門語言,其次跟其他語言相比,awk的優勢是在文本處理、數值計算等方面,在我們日常的營運工作中,awk還有1個很重要的情境是配合sed、grep的使用,正是因為這些,awk是營運工程師最常用的工具之一,下面記錄一下,awk在日誌收集、統計情境的一些最常用的姿勢。


awk使用格式

awk [-F value] [-v var=value]‘program text‘ [files....]
program text:
     BEGIN {actions}/pattern/{actions}END{actions}
內建變數
    
FS--FieldSeparator:域的分隔字元,預設的是以空白符分隔
    
RS--RecordSeparator 記錄的分隔字元,預設是以分行符號來分隔
    
FILENAME-- current filename
                   NF -- Number of
Feilds in current record,域的個數
    
NR-- Number of Record 輸入的記錄數,相當於行號一樣,多個檔案時會接著遞增
    
FNR-- File Number of Record 輸入的目前記錄數,每個檔案單獨計算
    
$0-- thewhole record  當前整個記錄
    
$n --the nth field of the current record 目前記錄的第n個域


awk常用函數

1、split (string, array, field separator)

2、substr(s,p,n) 返回字串s中從p開始長度為n的尾碼部分

3、 length函數返回沒有參數的字串的長度

4、gsub(regular expression, subsitutionstring, target string)



awk擴充使用

awk[options] ‘script‘ FILES
選項
-F:欄位分隔符號
-v:聲明一個變數,FS=:
awk‘{print $1 $2}‘ a.txt:則顯示welcometo
awk‘{print $1,$2}‘ a.txt:則顯示wlecometo
--------------
內建變數
    ORS
    OFS
    FS
    RS
    NR
    NF
    FNR
    ARGV:數組,儲存命令列本身這個字串,如awk‘{print $0}‘ a.txt b.txt
         這個命令中,ARGV[0]儲存awk,ARGV[1]儲存a.txt
    ARGC:awk命令的參數個數
----------------
printf命令的使用格式
    printfformat,item1
要點:
1、其與print命令最大的不同是,printf需要指定format
2、format用於指定後面的每個item的輸出格式
3、printf語句不會自動列印分行符號
format格式的指示符:
%c:顯示字元的ASCII
%d,%i:十進位的整數
%e,%E:科學計數法顯示數值
%f:顯示浮點數
%g,%G:以科學計數法的格式或浮點數的格式顯示數值
%s:顯示字串
%u:不帶正負號的整數
%%:顯示%自身

修飾符:
N:顯示寬度
-:靠左對齊
+:顯示數值符號


1,統計squid日誌中各個狀態代碼所佔的百分比

# cat /usr/local/squid/var/logs/access.log | awk ‘BEGIN{print "status code","\t""rate"}{count+=1;a[$9]+=1}END{for(i in a) print i,"\t",a[i]/count*100}‘ | sort -nk2status code rate400  0.00412448416  0.00412448478  0.00412448204  0.00618672401  0.02680910  0.0659916301  0.0763028302  0.787775404  2.19628403  2.66441206  5.02567304  17.7043200  71.4339


2,統計squid日誌中訪問次數前10的網域名稱

]# cat /usr/local/squid/var/logs/access.log | awk ‘BEGIN{print "domain","\t","rate"}{count+=1;a[$2]+=1}END{for(i in a){print i,"\t",a[i]}}‘ | sort -nk2 | tailbsy.pp.starschinalive.com  125js1.pcfg.cache.wpscdn.cn  131portal.wsds.cn  162vas.fun.tv  173img.funshion.com  238www.duba.com  277plugin.video.51togic.com  280p1.meituan.net  286res.qxz.37wan.com  306d.ifengimg.com  481

3,統計最近5分鐘的流量

日誌:27.156.95.175 uc.a.yximgs.com "image/webp" [25/Dec/2016:22:17:01 +0800] "GET http://uc.a.yximgs.com/upic/2016/11/27/11/BMjAxNjExMjcxMTIxMTNfODY2MTM1NV8xMzAxODgwMDQ4XzJfMw==_low.webp?tag=1-1482675421-f-0-8a7txqz36n-ce40124930229f39 HTTP/1.1" 200

cat /usr/local/squid/var/logs/access.log | awk ‘{i=int(substr($4,17,2)/5)*5;h=substr($4,14,2);s[h":"i]+=$10;}END{for(i in s)print i,s[i]*8/1024/1024/300"Mbps"}‘21:50 143.537Mbps


4,MISS的網域名稱請求數top10統計

# cat /usr/local/squid/var/logs/access.log | awk ‘{n+=1;if($0~/MISS/)a[$2]+=1}END{for(i in a){print i,a[i],a[i]/n*100}}‘ | sort -nrk2  | headwww.duba.com 237 0.868291p1.meituan.net 163 0.597179pas.suning.com 66 0.241803shopping.suning.com 55 0.20150277g4l9.com5.z0.glb.qiniucdn.com 55 0.201502res.qxz.37wan.com 50 0.183184review.suning.com 41 0.150211static.1sapp.com 32 0.117238s1.vas.wpscdn.cn 30 0.10991fs.ios.kugou.com 25 0.0915919


本文出自 “傑希” 部落格,請務必保留此出處http://jachy.blog.51cto.com/10625380/1886034

日誌統計中awk常見的運用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.