awk 常用命令测试
1.排序并统计相同ip访问次数
cat access.log |awk '{print $ 1}' | grep -v "^ $"|sort|uniq -c
awk '{S[$1]++} END{for (i in S) print S[i],i}' access.log
2.统计各种连接状态的数量
netstat -n | awk '/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}'
NF]:表示数组元素的值;++S[$NF]:表示对某个数加一
3.统计总访问量
cat access.log |awk '{print $ 1}'|sort|uniq -c|awk 'BEGIN{sum=0} {sum+= $1} END{print "PV is",sum}'
4.统计输出格式:[访问次数*单个文件大小] [访问次数] [访问的文件]
awk '{array_num[
)7]=array_size[
10}END{for(i in array_num) print array_size[i],array_num[i],i}' access_2010-12-8.log |sort -rn|head
awk '{array_num[
)7]=array_size[
10}END{for(i in array_num) print "PV:"array_size[i],"\t""Count:"array_num[i],"\t""File:"i}' access.log |sort -rn|head
awk '{print
10}' s-access.log |sort|uniq -c|sort -r|awk '{print "PV:"
)3,"\t""Count:"$ 1,"\t""File:" $2}'|sort -rn|head
5.统计/etc/passwd 中各种类型shell的数量
awk -F: '{shells[$NF]++} END{ for(i in shells){print i,shells[i]} }' /etc/passwd
6.网站访问状态统计
netstat -ant |grep :80 |awk '{access_stat[$NF]++} END{for(i in access_stat ){print i,access_stat[i]}}'
or
netstat -ant |grep :80 |awk '{access_stat[$NF]++} END{for(i in access_stat ){print i,access_stat[i]}}' |sort -k2 -n |head
7.统计当前访问的每个IP的数量
netstat -ant |grep :80 |awk -F: '{ip_count[$8]++} END{for(i in ip_count){print i,ip_count[i]} }' |sort
8.统计Apache/Nginx日志中某一天的PV量
grep '07/Aug/2012' access.log |wc -l
9.统计Apache/Nginx日志中某一天不同IP的访问量
grep '07/Aug/2012' access.log |awk '{ips[$1]++} END{for(i in ips){print i,ips[i]} }' |sort -k2 -rn |head
or
grep '07/Aug/2012' access.log |awk '{ips[ $ 1]++} END{for(i in ips){print i,ips[i]} }' |awk ' $2>100' |sort -k2 -rn
10.统计用户名为4个字符的用户
awk -F: '
/{count++; print $1} END{print "count is: " count}' /etc/passwd
or
awk -F: 'length(
)%3D%3D4%7Bcount%2B%2B%3B%20print%20&preview=true)1} END{print "count is: "count}' /etc/passwd
11.删除配置文件中#号注释行
sed -r -i '/^#/d' file.conf
12.删除无内容空行