awk统计文本中同一数据出现的次数排序(转)

来源:互联网 发布:java生成二维码图片 编辑:程序博客网 时间:2024/05/28 06:05

突然发现awk原来可以统计同一数据在要处理的文件中所出现的次数.原来的时候 为了分析数据还自己写程序,哎,无语,当时还以为自己多强,手工分析不过来的东西写程序处理.现在想来实在是年少轻狂.解决问题嘛,不讲究方式,只要快速 高效的完成任务就OK了.

好,今天小试牛刀统计了一下passwd文件中shell部分重复的shell名和出现的次数,看命令:

$awk -F: '{a[$7]++}END{for (i in a) print i" "a[i]}' /etc/passwd/bin/false 13/bin/sh 18/bin/bash 2/usr/sbin/nologin 1/bin/sync 1

解说一下:
-F: 以:分割字段
a[7]++a7在passwd文件中是shell名,在这里是数组索引.awk的数据索引可以是是字符类型这点真 是太帅了.
for (i in a) print i” “a[i]
用for循环取出数据来,这时候i取的时下标,a[i]是里面存储的数据
是$7出现的次数,狠!
郁闷了,这办法太强了,以后再遇到问题还是先baidu,再google然后再自己动手吧!

补充:
后来发现,如果awk玩得不咋熟悉的话,用命令组合也可以实现同样的功能

 awk -F: '{print $7}'|sort|uniq -c /etc/passwd**快速统计日志文件里点击量前十位的URL**关于shell命令,网上流传着很多奇技淫巧,比如说快速统计日志文件里点击量前十位的URL

awk ‘{print $7}’ /path/to/log | sort | uniq -c | sort -nr | head -n 10
“`

0 0
原创粉丝点击