免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2090 | 回复: 4
打印 上一主题 下一主题

[文本处理] 求一个从网关日志实时统计登录人数的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-09 09:13 |只看该作者 |倒序浏览
假设日志内容如下
2013-04-08 08:11:53 026->0026|6.1.5.237|X.XX.XXX.XXX|登录
2013-04-08 08:18:08 447->1415|6.1.5.237|XXX.XXX.XXX.XXX|登录
2013-04-08 08:21:23 838->1505|6.1.5.237|XX.XX.XX.X|登录
2013-04-08 08:22:08 307->0360|6.1.5.237|XXX.XX.XX.XXX登出
2013-04-08 08:26:47 182->1611|6.1.5.242|XX.XX.XX.XXX|登录
2013-04-08 08:31:43 979->1799|6.1.5.237|XX.XXX.XXX.XXX|登录
2013-04-08 08:34:41 291->0186|6.1.5.237|XXX.XXX.XXX.XXX|登出
2013-04-08 08:35:00 166->1515|6.1.5.242|XX.XXX.XX.XX|登录
其中->后面的4位数字表示不同的人的工号,现在需要一个shell脚本来实时统计整个网关的登录人数,重复登录的不算。求大神帮一下

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-04-09 09:52 |只看该作者
本帖最后由 关阴月飞 于 2013-04-09 09:54 编辑
  1. awk -F'[ |>]+' '!a[$4]++{n++}END{print n}' logfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-04-09 10:43 |只看该作者
awk -F'[>|\|]' '{print $2}' file | sort | uniq | wc -l
回复 1# l306896648


   

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
4 [报告]
发表于 2013-04-09 11:13 |只看该作者
本帖最后由 wenhq 于 2013-04-09 11:16 编辑

grep -oP '(?<=->)\d{4}(?=\))' urfile|uniq -u|wc -l

论坛徽章:
0
5 [报告]
发表于 2013-04-09 11:47 |只看该作者
tail -f urfile | awk -F "[ >|]" '{
                        a==""?a=$1" "$2:a=a;
                        b=$1" "$2;
                        c==""?c=$2:c=c;
                        if(!($4 in lgin) &&  $7=="登录") {
                                s=s+1;
                                lgin[$4]=$4;
                                if($4 in lgout) { delete lgout[$4];}
                        }
                        if(!($4 in lgout) && $7=="登出") {
                                m++;
                                lgout[$4]=$4;
                                if($4 in lgin) { delete lgin[$4];};
                        }
                                
                        if(c!=$2 ) {
                                !m?m=0:m=m;
                                n=length(lgin);
                                print a"---"b"--->登入:"s",登出:"m",在线:"n;
                                c=$2;
                        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP