shell脚本编写 统计ip下的用户数

我爱吃葱花 发布于 2014/10/16 23:20
阅读 1K+
收藏 3

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

文件 ip.txt

192.168.0.1 zhangxc
192.168.0.1 zhangxc1
192.168.0.1 zhangxc3
192.168.0.2 zhangc
192.168.0.2 zhangc1
192.168.0.3 zhangc
192.168.0.3 zhangc
192.168.0.3 zhangxc
192.168.0.3 zhangxc
192.168.0.0 zhang
192.168.0.5 zhang
192.168.0.0 zhang
192.168.0.0 zhang
192.168.0.0 zhang2

要求输出如下

192.168.0.1 3

192.168.0.2 2

192.168.0.3 2

192.168.0.5 1

192.168.0.0 2

即ip所对应的用户数

求指导shell如何编写

加载中
0
redraiment
redraiment
sort -u ip.txt | awk '{a[$1]++} END{for(i in a)print i,a[i]}'




我爱吃葱花
我爱吃葱花
谢谢,你的答案是我想要的
0
zhailibao
zhailibao
awk '{ips[$1]++} END{for(ip in ips) print ip,ips[ip]}' ip.txt
192.168.0.5 1
192.168.0.0 4
192.168.0.1 3
192.168.0.2 2
192.168.0.3 4




周翼翼
周翼翼
回复 @我爱吃葱花 : 先uniq,再awk,不就是你选的正确答案吗. (uniq前要先sort,这个是常识,所以没有明说)
我爱吃葱花
我爱吃葱花
回复 @周翼翼 : 这个方法不用先uniq,它是采用数组的方式的
我爱吃葱花
我爱吃葱花
我要的是ip对应的用户数不是ip的重复数!!!你估计没有明白我的意思
周翼翼
周翼翼
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
winnie_tour
winnie_tour
不要uniq了,数组的下标是ip已经过滤完了
我爱吃葱花
我爱吃葱花
回复 @周翼翼 : 如果你采用uniq,是不是吧用户忽略了呢
周翼翼
周翼翼
没有uniq,同ip,同用户会多算。
0
开源中国首席爱情专家
开源中国首席爱情专家
cat ip.txt |awk '{print $1}'|sort|uniq -c|sort -rn  |awk '{print $2"\t"$1}'

192.168.0.3 4
192.168.0.0 4
192.168.0.1 3
192.168.0.2 2
192.168.0.5 1



我爱吃葱花
我爱吃葱花
192.168.0.0 用户数是2 192.168.0.3 用户数是2
0
我爱吃葱花
我爱吃葱花
[root @localhost zhangxc]# sort -u  ip.txt | awk '{ips[$1]++} END {for(ip in ips) print ip,ips[ip]}'
192.168.0.5 1
192.168.0.0 2
192.168.0.1 3
192.168.0.2 2

192.168.0.3 2

这个是正确的答案!谢谢Redraiment

0
我爱吃葱花
我爱吃葱花

引用来自“zhailibao”的评论

awk '{ips[$1]++} END{for(ip in ips) print ip,ips[ip]}' ip.txt
192.168.0.5 1
192.168.0.0 4
192.168.0.1 3
192.168.0.2 2
192.168.0.3 4




回复 @周翼翼 : 恕我愚笨,我觉得用sort -u 加awk 、加uniq就行
[root @localhost zhangxc]# cat ip.txt | sort -u |awk '{print $1}' |uniq -c
      2 192.168.0.0
      3 192.168.0.1
      2 192.168.0.2
      2 192.168.0.3
      1 192.168.0.5
这个是你要表达的意思吗?
我爱吃葱花
我爱吃葱花
该评论暂时无法显示,详情咨询 QQ 群:点此入群
周翼翼
周翼翼
该评论暂时无法显示,详情咨询 QQ 群:点此入群
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部