awk流程控制
分支结构
单分支
if(条件){编辑指令}
[root@room9pc01 ~]# awk -F: '{if($3>1000){x++}} END{print x}' /etc/passwd //文件中/etc/passwd 中UID大于1000的
1
双分支
if(条件){编辑指令1} else {编辑指令2}
[root@room9pc01 ~]# awk -F: '{if($3>1000){x++}else{y++}} END{print x,y}' /etc/passwd
1 43
多分支
if(条件){编辑指令1} else if {编辑指令2}..else{编辑指令N}
awk数组
数组的定义
格式:数组名[下标]=元素值
调用数组
格式:数组名[下标]
遍历数组
for(变量 in 数组名) {print 数组名[变量]}
[root@room9pc01 ~]# awk 'BEGIN{x[0]=11;x[1]=22;print x[1],x[0]}'
22 11
[root@room9pc01 ~]# awk 'BEGIN{a[0]=11;a[1]=22;a[2]=33;a[3]=44;for(i in a) {print a[i]}}'
11
22
33
44
shell数组是一个可以存储多个值的变量
[root@room9pc01 ~]# x=(11 22 33)
[root@room9pc01 ~]# echo ${x[0]}
11
模拟有100个人,在上网 访问网站10W次,DOS攻击 deny of service
[root@room9pc01 ~]# ab -c 100 -n 100000 http://172.25.0.10/
公式:统计出现次数
[root@desktop0 ~]# awk '{a[$1]++} END{for(i in a ) {print a[i],i}}' /var/log/httpd/access_log |sort -n //筛选IP对应访问本机的次数,sort -n是排序命令