当前位置: 代码迷 >> Web前端 >> webgame 日记解析的过程
  详细解决方案

webgame 日记解析的过程

热度:697   发布时间:2012-08-02 11:35:26.0
webgame 日志解析的过程
awk 'BEGIN {FS="|"}; {print $2 "|" $3  "|" $4}' gamelogin.log.2011-08-15-23  > tmp.1



awk 'BEGIN {FS="|"}; {print $1}' tmp.1 | awk 'BEGIN {FS=":"}; {print $1}' > tmp.2

合并

awk 'BEGIN {FS="|"}; {print $2 "|" $3  "|" $4}' gamelogin.log.2011-08-15-23 | awk 'BEGIN {FS="|"}; {print $1 | awk 'BEGIN {FS=":"}; {print $1}  "|" $2 "|" $3}' > tmp.3

awk 'BEGIN {FS="|"}; [{print awk 'BEGIN {FS=":"}; {print $1}' > tmp.3

-----------------------------------

awk 'BEGIN {FS="|"}; {print ($1 || substr($1, 1, index($1,":")-1 )) "|" $2 "|" $3}' tmp.1 > tmp.4

awk 'BEGIN {FS="|"}; {print substr($1, 1, 9) "|" $2 "|" $3}' tmp.1 > tmp.4
----------------------------
awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' tmp.1 > tmp.4  OK

合并:

清理gamelogin.log数据,按时间分:
格式

23|255123768|mszj|1001

awk 'BEGIN {FS="|"}; {print substr($1,index($1, " ") + 1, 2) "|" $2 "|" $3  "|" $4}' gamelogin.log.2011-08-15-23 | awk 'BEGIN {FS="|"}; { if(index($2,":")>0) {print $1 "|" substr($2, 1, index($2,":")-1) "|" $3 "|" $4 } else {print $1 "|" $2 "|" $3 "|" $4} }' > tmp.6

awk 'BEGIN {FS="|"}; {print $1 " " $3 " " $2 " " $4 }' tmp.10 | sort| uniq -c > tmp.7

------------------------------
合并:
awk 'BEGIN {FS="|"}; {print substr($1,index($1, " ") + 1, 2) "|" $2 "|" $3  "|" $4}' gamelogin.log.2011-08-15-23 | awk 'BEGIN {FS="|"}; { if(index($2,":")>0) {print $1 "|" substr($2, 1, index($2,":")-1) "|" $3 "|" $4 } else {print $1 "|" $2 "|" $3 "|" $4} }' | awk 'BEGIN {FS="|"}; {print $1 " " $3 " " $2 " " $4 }' | sort| uniq -c | sort -r -n > tmp.7

逆序输出:
awk 'BEGIN {FS="|"}; {print substr($1,index($1, " ") + 1, 2) "|" $2 "|" $3  "|" $4}' gamelogin.log.2011-08-15-23 | awk 'BEGIN {FS="|"}; { if(index($2,":")>0) {print $1 "|" substr($2, 1, index($2,":")-1) "|" $3 "|" $4 } else {print $1 "|" $2 "|" $3 "|" $4} }' | awk 'BEGIN {FS="|"}; {print $1 " " $3 " " $2 " " $4 }' | sort| uniq -c |awk 'BEGIN {FS=" "}; {print $3 " " $1 " " $5 " " $4 " " $2 }' | sort -r -n > tmp.7

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
promitioin.log的处理

awk 'BEGIN {FS=","}; {print substr($1,index($1, " ") + 1, 2) "|" $2 "|" $3  "|" $4 "|" $5 "|" $6  "|" $7 "|" $8 }' promition.log.2011-08-15-23 > log.1

awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $2 " " $3  " " $4 " " $5 " "  $8 " "substr($1,index($1, " ") + 1, 2) }' promition.log.2011-08-15-23 | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $2 " " $3 " " $1 " " $5 " " $4 " " $6 " " $7 " " $8 " " $9}'| sort -r -n >log.2



cat test.txt test1.txt | sort | uniq -d
vimdiff tmp1 tem2

cat tmp1 tmp2 | uniq -d

awk '{print $7}' log.2 | sort | uniq > log2.log
合并文件
cat file1.out file2.out > file2.out 
cat promition.success.log.2011-08-15-* > promition.success.log

gamelogin.log 16日

awk 'BEGIN {FS="|"}; {print substr($1,index($1, " ") + 1, 2) "|" $2 "|" $3  "|" $4}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($2,":")>0) {print $1 "|" substr($2, 1, index($2,":")-1) "|" $3 "|" $4 } else {print $1 "|" $2 "|" $3 "|" $4} }' | awk 'BEGIN {FS="|"}; {print $1 " " $3 " " $2 " " $4 }' | sort| uniq -c |awk 'BEGIN {FS=" "}; {print $3 " " $1 " " $5 " " $4 " " $2 }' | sort -r -n > tmp
-----------------------------------
awk 'BEGIN {FS="|"}; {print $2 "|" $3  "|" $4}' gamelogin.log > tmp.1

awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' tmp.1 > tmp.2

awk 'BEGIN {FS="|"}; {print $2 "|" $3  "|" $4}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' > tmp.3

awk 'BEGIN {FS="|"}; {print $1 " " $2 " " $3 }' tmp.3 | sort| uniq -c > tmp.4

awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > tmp.5

awk '{ sub(/^[ \t]+/,""); print }' tmp.5 > tmp.7
awk 'gsub(/^ *| *$/,"")'

awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}' tmp.5  > tmp.6

sort tmp.5  > tmp.6
-----------------------------
awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > tmp.5

awk 'BEGIN {FS="|"}; {print $2}' tmp.5 | uniq | sort > tmp-uid

===================================================================
promition.success.log 15日

awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $2 " " $3  " " $4 " " $5 " "  $8 " "substr($1,index($1, " ") + 1, 2) }' promition.success.log | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $2 " " $3 " " $1 " " $5 " " $4 " " $6 " " $7 " " $8 " " $9}'| sort -r -n >log.1


awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $5 }' promition.success.log | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $1 "|" $4 "|" $2 "|" $3 }'| sort >log.1

awk 'BEGIN {FS="|"}; {print $2}' log.1 | uniq | sort > log-uid

//多个文件合并为一行:
// paste glogin-uid-count.log prom-suc-uid-count.log log-rate.log > flux.log
----------------------------------
算登录率
cat log-uid tmp-uid | sort | uniq -d|wc -l >test.log

最终整理如下:

awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > glogin.log
awk 'BEGIN {FS="|"}; {print $2}' glogin.log | uniq | sort > glogin-uid
awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $5 }' promition.success.log | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $1 "|" $4 "|" $2 "|" $3 }'| sort > prom-suc.log
awk 'BEGIN {FS="|"}; {print $2}' prom-suc.log | uniq | sort > prom-suc-uid
计算前一天的次登录率
cat glogin-uid | wc -l  > tmp-glog-prom-uid.log
cat prom-suc-uid | wc -l >> tmp-glog-prom-uid.log
cat prom-suc-uid glogin-uid | sort | uniq -d|wc -l >> tmp-glog-prom-uid.log
cat tmp-glog-prom-uid.log | xargs echo > tmp-flux-rate.log
单个文件合并为一行
计算登录率
awk 'BEGIN {FS=" "}; {print $1 "|" $2 "|" $3 "|" $3/$2}' tmp-flux-rate.log > flux-rate.log
rm -f tmp*

-----------------------------
awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > glogin.log

awk 'BEGIN {FS="|"}; {print $2}' glogin.log | uniq | sort > glogin-uid

awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $5 }' promition.success.log | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $1 "|" $4 "|" $2 "|" $3 }'| sort > prom-suc.log

awk 'BEGIN {FS="|"}; {print $2}' prom-suc.log | uniq | sort > prom-suc-uid

cat glogin-uid | wc -l  > tmp-glog-prom-uid.log

cat prom-suc-uid | wc -l >> tmp-glog-prom-uid.log

cat prom-suc-uid glogin-uid | sort | uniq -d|wc -l >> tmp-glog-prom-uid.log

cat tmp-glog-prom-uid.log | xargs echo > tmp-flux-rate.log

awk 'BEGIN {FS=" "}; {print $1 "|" $2 "|" $3 "|" $3/$2}' tmp-flux-rate.log > flux-rate.log

rm -f tmp*

结果 532853|36842|15950|0.43293
----------------------------------
简化版
touch test.c 就创建了一个新文件 test.c


获取前一天的时间

cd /data/remote-log-server/log/promition/2011-08-17
cat promition.success.log.2011-08-17-* > promition.success.log.2011-08-17
scp promition.success.log.2011-08-17 root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/
rm -f promition.success.log.2011-08-17

cd /data/remote-log-server/log/gamelogin/2011-08-17
scp gamelogin.log root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/gamelogin.log.2011-08-17


echo `date -d"300 days ago" +%Y-%m-%d`
------------------------------------------------
单日拷贝数据
echo "************start**************"
  dd=`date +%Y-%m-%d -d " 1 days ago " `

  cd /data/remote-log-server/log/promition/$dd
  cat promition.success.log.$dd-* > promition.success.log.$dd
  scp promition.success.log.$dd root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/
  rm -f promition.success.log.$dd
  echo "************ $dd promition.success end**************"
  
  cd /data/remote-log-server/log/gamelogin/$dd
  scp gamelogin.log root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/gamelogin.log.$dd

  echo "************ $dd gamelogin end**************"

循环拷贝数据
10.3.17.26
/data/remote-log-server/run/wqo
sh testfor.log
k=0
while((k++<=2))
do
  echo "************start**************"
  dd=`date +%Y-%m-%d -d " $k days ago " `
  cd /data/remote-log-server/log/promition/$dd
  cat promition.success.log.$dd-* > promition.success.log.$dd
  scp promition.success.log.$dd root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/
  rm -f promition.success.log.$dd
  echo "************ $dd promition.success end**************"
  
  cd /data/remote-log-server/log/gamelogin/$dd
  scp gamelogin.log root@10.3.18.158:/data/remote-log-server/log/gamelogin/wqo/test/gamelogin.log.$dd

  echo "************ $dd gamelogin end**************"

done

--------------------------------------------

#!/bin/bash
# This script prints a message about your weight if you give it your
# weight in kilos and hight in centimeters.
if [ ! $# == 2 ]; then
  echo "Usage: $0 weight_in_kilos length_in_centimeters"
  exit
fi
weight="$1"
height="$2"
idealweight=$[$height - 110]
if [ $weight -le $idealweight ] ; then
  echo "You should eat a bit more fat."
else
  echo "You should eat a bit more fruit."
fi
# weight.sh 70 150
You should eat a bit more fruit.
# weight.sh 70 150 33

---------------------

awk '{FS="|"}; {print $6 "\t" $5 "\t" $4 "\t" $3 "\t" $2 "\t" $1 }' flux-rate.log | sort -k 1 > fff.log 

cat flux-rate.log | sort -k 1 > fff.log
cat flux-rate.log  | sort > fff.log 

ps aux | grep testfor.sh


---------------------------------------------
#!/bin/sh

echo "*********start********"

dd=`date +%Y-%m-%d -d " 1 days ago " `

if [ ! -f "gamelogin.log.$dd" ] ; then
    
   echo "*****gamelogin.log.$dd not existed*******"
   
   exit
fi
 

if [ ! -f "glogin.log.$dd" ] ; then    

   echo "***********glogin.log.$dd not exist, start to create it**************"

   awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log.$dd | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > glogin.log.$dd

   echo "***********glogin.log.$dd end***********"
 
else
   
   echo "************glogin.log.$dd is existed********************"

fi


awk 'BEGIN {FS="|"}; {print $2}' glogin.log.$dd | sort | uniq > glogin-uid.$dd

cat glogin-uid.$dd | wc -l  > tmp-glog-prom-uid.log

################################################################

tt=`date +%Y-%m-%d -d " 2 days ago " `

if [ -f "promition.success.log.$tt" ] ; then


    if [ ! -f "prom-suc.log.$tt" ] ; then

      echo "************prom-suc.log.$tt not exist , start to create it***********************"
  
      awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $5 }' promition.success.log.$tt | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $1 "|" $4 "|" $2 "|" $3 }'| sort > prom-suc.log.$tt

      echo "***********prom-suc.log.$tt end***************"

    else 
  
      echo "***********prom-suc.log.$tt is existed**********************"

    fi

    awk 'BEGIN {FS="|"}; {print $2}' prom-suc.log.$tt | sort | uniq  > prom-suc-uid.$tt


    cat prom-suc-uid.$tt | wc -l >> tmp-glog-prom-uid.log

    cat prom-suc-uid.$tt glogin-uid.$dd | sort | uniq -d | wc -l >> tmp-glog-prom-uid.log

    echo $dd >>tmp-glog-prom-uid.log

    echo $tt >>tmp-glog-prom-uid.log

    cat tmp-glog-prom-uid.log | xargs echo > tmp-flux-rate.log

    awk 'BEGIN {FS=" "}; {print $1 "|" $2 "|" $3 "|" $3/$2 "|" $4 "|" $5 }' tmp-flux-rate.log >> flux-rate.log

    echo "***********flux-rate.log end************"
    rm -f tmp*

else

    echo "********promition.success.log.$tt not exit!***************"

    exit

fi

echo "*****************end**********************"




-------------------------
#!/bin/sh

echo "*********start********"

m=0
while((m++<=30))
do

dd=`date +%Y-%m-%d -d " $m days ago " `

if [ ! -f "gamelogin.log.$dd" ] ; then
    
   echo "*****gamelogin.log.$dd not existed*******"
   
   exit
fi
 

if [ ! -f "glogin.log.$dd" ] ; then    

   echo "***********glogin.log.$dd not exist, start to create it**************"

   awk 'BEGIN {FS="|"}; {if($2!=""){print $2 "|" $3  "|" $4}}' gamelogin.log.$dd | awk 'BEGIN {FS="|"}; { if(index($1,":")>0) {print substr($1, 1, index($1,":")-1) "|" $2 "|" $3 } else {print $1 "|" $2 "|" $3} }' | awk 'BEGIN {FS="|"}; {print  "|" $1 "|" $2 "|" $3 }' | sort| uniq -c |awk 'BEGIN {FS="|"}; {print gsub(/[[:blank:]]*/,"",$1) "|" $2 "|" $3 "|" $4}'| sort > glogin.log.$dd

   echo "***********glogin.log.$dd end***********"
 
else
   
   echo "************glogin.log.$dd is existed********************"

fi

if [ ! -f "glogin-uid.$dd" ] ; then
   echo "********************glogin-uid.$dd not exist, create id***********"
   awk 'BEGIN {FS="|"}; {print $2}' glogin.log.$dd | sort | uniq > glogin-uid.$dd

else
   echo "********************glogin-uid.$dd is existed******"
fi


################################################################

echo "****for promition*****"

k=0
while((k++<30))
do

((n=k+m))

tt=`date +%Y-%m-%d -d " $n  days ago " `

  if [ -f "promition.success.log.$tt" ] ; then


      if [ ! -f "prom-suc.log.$tt" ] ; then

        echo "************prom-suc.log.$tt not exist , start to create it***********************"
  
        awk 'BEGIN {FS=","}; {print  $6  " " $7 " " $5 }' promition.success.log.$tt | sort |uniq -c |awk 'BEGIN {FS=" "}; {print $1 "|" $4 "|" $2 "|" $3 }'| sort > prom-suc.log.$tt

        echo "***********prom-suc.log.$tt end***************"

      else 
  
        echo "***********prom-suc.log.$tt is existed**********************"

      fi
       
      if [ ! -f "prom-suc-uid.$tt" ] ; then
         
        echo "***************prom-suc-uid.$tt is not exited, create**********************"
        
        awk 'BEGIN {FS="|"}; {print $2}' prom-suc.log.$tt | sort | uniq > prom-suc-uid.$tt

      else
     
        echo "****************prom-suc-uid.$tt is existed********************"

      fi

      cat glogin-uid.$dd | wc -l  > tmp-glog-prom-uid.log

      cat prom-suc-uid.$tt | wc -l >> tmp-glog-prom-uid.log

      cat prom-suc-uid.$tt glogin-uid.$dd | sort | uniq -d | wc -l >> tmp-glog-prom-uid.log

      echo $dd >>tmp-glog-prom-uid.log

      echo $tt >>tmp-glog-prom-uid.log

      cat tmp-glog-prom-uid.log | xargs echo > tmp-flux-rate.log

      awk 'BEGIN {FS=" "}; {print $5 "|" $4 "|" $3/$2 "|" $3 "|" $2 "|" $1 }' tmp-flux-rate.log >> flux-rate.log

      echo "***********flux-rate.log end************"
      rm -f tmp*

  else

      echo "********promition.success.log.$tt not exit!***************"

  fi


done

done

echo "*****************end**********************"