首页 > 代码库 > sort、uniq、awk

sort、uniq、awk

uniq -c
--conut,显示个数
sort -u
--unique 去重显示
sort -r
--reverse 倒序排列
#vim a.txt
www.kazihuo.com
www.kazihuo.com
post.kazihuo.com
www.kazihuo.com
mp3.kazihuo.com
www.kazihuo.com
www.kazihuo.com
post.kazihuo.com
#awk -F / ‘{print $3}‘ a.txt|sort|uniq -c|sort -r a.txt
5 www.kazihuo.com
2 post.kazihuo.com
1 mp3.kazihuo.com
#awk -F / ‘{S[$3]++}END{for (i in S) print i,S[i]‘} a.txt
post.kazihuo.com 2
mp3.kazihuo.com 1
www.kazihuo.com 5

 

1)统计/etc/passwd 中各种类型shell的数量:# awk -F: ‘{shells[$NF]++} END{ for(i in shells){print i,shells[i]} }‘ /etc/passwd

2)网站访问状态统计 <当前状态 netstat>:# 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

3)统计当前访问的每个IP的数量 <当前状态 netstat>:#netstat -ant |grep :80 |awk -F: ‘{ip_count[$8]++} END{for(i in ip_count){print i,ip_count[i]} }‘ |sort

4)统计Apache/Nginx日志中某一天的PV量  <统计日志>:#grep ‘07/Aug/2012‘ access.log |wc -l

5)统计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

6)统计用户名为4个字符的用户:# awk -F: ‘$1~/^....$/{count++; print $1} END{print "count is: " count}‘ /etc/passwd

or      # awk -F: ‘length($1)==4{count++; print $1} END{print "count is: "count}‘ /etc/passwd

sort、uniq、awk