您好,登錄后才能下訂單哦!
前言:首先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--Field
Separator:域的分隔符,默認的是以空白符分隔
RS--Record
Separator 記錄的分隔符,默認是以換行符來分隔
FILENAME
-- current filename
NF -- Number of Feilds in current record,域的個數
NR
-- Number of Record 輸入的記錄數,相當于行號一樣,多個文件時會接著遞增
FNR
-- File Number of Record 輸入的當前記錄數,每個文件單獨計算
$0
-- the
whole 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 -nk2 status code rate 400 0.00412448 416 0.00412448 478 0.00412448 204 0.00618672 401 0.0268091 0 0.0659916 301 0.0763028 302 0.787775 404 2.19628 403 2.66441 206 5.02567 304 17.7043 200 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 | tail bsy.pp.starschinalive.com 125 js1.pcfg.cache.wpscdn.cn 131 portal.wsds.cn 162 vas.fun.tv 173 img.funshion.com 238 www.duba.com 277 plugin.video.51togic.com 280 p1.meituan.net 286 res.qxz.37wan.com 306 d.ifengimg.com 481
3,統計最近5分鐘的流量
日志:27.156.95.175 uc.a.yximgs.com "p_w_picpath/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 | head www.duba.com 237 0.868291 p1.meituan.net 163 0.597179 pas.suning.com 66 0.241803 shopping.suning.com 55 0.201502 77g4l9.com5.z0.glb.qiniucdn.com 55 0.201502 res.qxz.37wan.com 50 0.183184 review.suning.com 41 0.150211 static.1sapp.com 32 0.117238 s1.vas.wpscdn.cn 30 0.10991 fs.ios.kugou.com 25 0.0915919
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。