Chinaunix首页 | 论坛 | 博客
  • 博客访问: 652885
  • 博文数量: 149
  • 博客积分: 3901
  • 博客等级: 中校
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-16 14:33
文章分类

全部博文(149)

文章存档

2014年(2)

2013年(10)

2012年(32)

2011年(21)

2010年(84)

分类:

2010-08-05 16:33:01


按照用户的 PV 倒序排列。
 分别抽取 7月28号的  25%,50%,75% 的10个人 来 看看具体的操作 - 要区分新老用户


1. 先取得 7月28号前的 用户

find login/ test_login/ -type f -exec cat {} \; |perl -nle
 if( /at=(\d{4}-\d{2}-\d{2}).*aip=(.*?)<.*/ ){
     if( $1 lt "2010-07-28" ){
        map{ print } split /,/,$2 ;
     }
 }

' |sort -u > /tmp/old.100040.2010-07-28.txt




2. 取  7月28 号的 用户 进行抽样 ,并通过 old.100040.2010-07-28.txt ,进行 新老用户的区分


find . -type f -name "*2010-07-28*" -exec cat {} \; |perl -nle '
  BEGIN{
     open FILE, "/tmp/old.100040.2010-07-28.txt" or die $!;
     %old_ip = {} ;
     while (<FILE>) {
        chomp;
        $old_ip{$_}=1;
     }
  }

  chomp;
  my %m = {} ;
  # 形成 hash

  map{ $m{$1}=$2 if /(.*?)=(.*)/ ; } split /<\|>/ ;

  $p{ $m{aip} }++;
  
  $h{ $m{aip} }{ $m{at} }="登入\t$m{wv} $m{abt}" if $m{aop} eq "a" ;
  $h{ $m{aip} }{ $m{at} }="浏览\t$m{bn} $m{pn}" if $m{aop} eq "be" ;
  $h{ $m{aip} }{ $m{at} }="栏目\t$m{bn} $m{pn}" if $m{aop} eq "bl" ;
  $h{ $m{aip} }{ $m{at} }="下载\t$m{bn} $m{pn}" if $m{aop} eq "d" ;

  
  $h{ $m{aip} }{ $m{at} }="搜索\t$m{bn} $m{pn}" if $m{aop} eq "se" ;
  
  END{
     my $nuu = scalar keys %p;
     print " $nuu " ;
     foreach $k (sort { $p{$b} <=> $p{$a} } keys %p){
        ++$row;
        
        foreach $tt ( (0.25,0.5,0.75) ){
            my $is_new = "新用户" ;
            $is_new = "老用户" if $old_ip{$k} ;
            if( $row> ($nuu*$tt) and $row< ($nuu*$tt)+100 ){
               print "\n\n\n$is_new $tt -- $k";
               my %mm = %{$h{$k}} ;
               foreach $at (sort keys %mm){
                  print "$at\t$mm{$at}";
               }
            }
        }
     }
  }
> /tmp/07-28抽样-byip-by新老用户-100.txt


阅读(641) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~