Shell-shell统一用户登录ip的个数

Shell-shell统一用户登录ip的个数

偏爱自由 发布于 2017-09-07 字数 324 浏览 1167 回复 1

有用户登录日志:
A 127.0.0.1
B 127.0.0.2
C 127.0.0.3
A 127.0.0.2
B 127.0.0.2
C 127.0.0.4
A 127.0.0.1
统计每一个用户在每个ip的登录次数,希望得到:
A 127.0.0.1 127.0.0.2
2 1
B 127.0.0.2
2
C 127.0.0.3 127.0.0.4
1 1
请问使用shell如何能实现。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-09-15 1 楼

bash4 以上版本可以使用关联数组
由于暂时没有bash4以上的系统,没有验证正确与否,只提供一种思路

#!/bin/bash
declare -A data
IFS=$'n';for line in sort file;do
if [ -z ${data[$line]} ];then
data[$line]=1
else
let data[$line]++
fi
done

这时data数组中的内容如下
data['A 127.0.0.1']=2
data['A 127.0.0.2']=1
data['B 127.0.0.2']=2
data['C 127.0.0.3']=1
data['C 127.0.0.4']=1

可以生成一个中间结果
A 127.0.0.1 2
A 127.0.0.2 1
B 127.0.0.2 2
C 127.0.0.3 1
C 127.0.0.4 1
将这个结果整理一下就是所求

觉得这个问题就像hadoop的mapreduce 使用python或ruby脚本解决更容易些