【数组遍历企业常用】【普通数组】【真实案例 关联数组】【wc -l 统计行数】

数组遍历–用来统计网站日志的访问量。

++i:从1开始加,运算在赋值
i++: 从0开始加,赋值在运算
#按索引遍历:
在这里插入图片描述

普通数组

1.先创建一个test文件,统计用户的数量
vim test.txt #将文件内容的第一个字段作为数组的值,通过索引获取到值
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin

固定语法;cat test.txt | awk -F":" ‘{username[x++]=$1} END{for(i in username) {print i,username[i]}}’
可改 可改 其他固定的 语法
0 root
1 bin
#注意:变量i是索引
图片详解
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

真实案例 关联数组

语法都是固定的 直接套用,查你想查的对应列

#把要统计的对象作为索引,最后对他们的值进行累加,累加出来的这个值就是你的统计数量
图片详解
在这里插入图片描述

  1. 统计/etc/passwd中各种类型shell的数量
    语法; cat /etc/passwd | awk -F: ‘{shells[$NF]++} END{ for(i in shells){print i,shells[i]} }’
    可改 其他固定的 语法

2.统计nginx日志出现的状态码
语法; cat access.log | awk ‘{stat[$9]++} END{for(i in stat){print i,stat[i]}}’

3.统计当前nginx日志中每个ip访问的数量
语法; cat access.log | awk ‘{ips[$1]++} END{for(i in ips){print i,ips[i]}}’

4.统计某一天的nginx日志中的不同ip的访问量
语法; cat access.log |grep ‘28/Sep/2019’ | awk ‘{ips[$1]++} END{for(i in ips){print i,ips[i]}}’

5.统计nginx日志中某一天访问最多的前10个ip
语法; cat access.log |grep ‘28/Sep/2019’ | awk ‘{ips[$1]++} END{for(i in ips){print i,ips[i]}}’ |sort -k2 -rn | head -n 10
sort:排序,默认升序
-k:指定列数
-r:降序
-n:以数值来排序

6.统计tcp连接的状态—下去自己查各个状态,包括什么原因造成的!
语法; netstat -n | awk ‘/^tcp/ {tcps[$NF]++} END {for(i in tcps) {print i, tcps[i]}}’

LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30
ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值