千家信息网

日志统计中awk常见的运用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,前言:首先awk是一门语言,其次跟其他语言相比,awk的优势是在文本处理、数值计算等方面,在我们日常的运维工作中,awk还有1个很重要的场景是配合sed、grep的使用,正是因为这些,awk是运维工程
千家信息网最后更新 2026年10月31日日志统计中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--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 -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 "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  | 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


格式 统计 命令 字符 日志 字符串 数值 分隔符 变量 常用 个数 函数 参数 场景 域名 换行符 整数 文件 点数 科学 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网科技产业 中关村互联网科技集团 广州互联网科技公司 互联网金融与金融科技 互联网科技金融公司 无线互联网科技 唐信互联网科技 大连 金融科技和互联网金融 字节跳动和互联网科技 宁夏科技产业互联网案例 互联网还是高科技吗 世界互联网科技公司市值排名 互联网金融科技展 科技赋能视角下互联网保险发展 图游互联网科技 全球科技与互联网公司市值变化 互联网金融金融科技 现代科技的标志之一的互联网 互联网科技快速发展优美句子 互联网和科技创新 宁波青枫互联网科技有限公司 花神(南京)互联网科技有限公司 科技类公司包括互联网吗 乌鲁木齐新华智原互联网科技学校 高科技互联网发展前景如何 合肥互联网科技公司公章图片 产业互联网科技服务公司 35岁以上互联网科技行业 新氧科技和美国互联网有关系吗
0