按照用户的 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
|
阅读(649) | 评论(0) | 转发(0) |