awk高级应用

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是排序命令







猜你喜欢

转载自blog.csdn.net/zhydream77/article/details/80166852