- 论坛徽章:
- 0
|
blackold 发表于 2010-04-16 11:29 ![]()
你这个复杂了
- 分解分析:
- awk '{a[$3]++;b[$3" "$2]++}END{for(i in b){$0=i;printf "%s\t%d\t%s\t%d\n",$1,a[$1],$2,b[i]}}' 数据文件
- a[$3]++ 记录每个IP的总数
- b[$3 " " $2]++ 记录每个IP下ID的总数
- for(i in b){$0=i;printf "%s\t%d\t%s\t%d\n",$1,a[$1],$2,b[i]}
- 列举IP和ID的组合
- $0=i 主要目的是分解
- printf "%s\t%d\t%s\t%d\n",$1,a[$1],$2,b[i]
- 显示信息:
- IP 文章总数 ID ID文章总数
- | sort -k2,2nr -k1,1 -k4,4nr -k3,3
- 排序:
- 先按照文章总数排序(逆序),如果文章总数相同,按照IP排序,在同一IP下,以ID的文章总数排序(逆序),如果ID文章数相同,就以ID排序
- | awk '++a[$1]<6{if(ip!=$1){printf "\n%s\t%s\t%s,%s",$1,$2,$3,$4;ip=$1}else{printf":%s,%s",$3,$4}}END{print ""}'
- 每个IP只显示前5个ID
复制代码 |
|