使用awk和grep做简单的统计

假如某个广告点击数据记录在文件里面,文件中每一行数据由‘时间’,‘uid’两个字段组成,要求每分钟统计某个uid带来的点击量并计入数据库,可以用shell来实现该功能。

#!/bin/bash
#广告点击统计,统计前一分钟的点击数

stat_time=`date -d "- minutes ago" +"%Y-%m-%d %k:%M"`
log_date=`date -d "$stat_time" +%Y-%m-%d`;
log_month=`date -d "$stat_time" +%Y-%m`
stat_minute=`date -d "$stat_time" +%k:%M`;
log_time=`date +%s -d"$stat_time"`

datadir=/opt
sqlDir=$datadir/data/sql/$log_month
logDir=$datadir/log/$log_month

host="192.168.1.1"
name="root"
password="root"
db="ad"

if [ ! -d "$sqlDir" ]
then
mkdir -p "$sqlDir"
fi

logfile=$logDir/'ad_click_'$log_date.txt
echo $logfile;
if [ -f $logfile ]
then
grep $stat_minute $logfile | awk '{a[$3]++}END{for(i in a)print "INSERT INTO ad_clicks(from_id,clicks,log_time) VALUES ("i","a[i]",'$log_time');"}' >$sqlDir/ad_click.sql
mysql -h$host -u$name -p$password $db -e "delete from ad_clicks where log_time ='$log_time'"
mysql -h$host -u$name -p$password $db < $sqlDir/ad_click.sql
else
echo $logfile" not exist"
fi

 

 

posted @ 2011-12-20 10:32  notedd  阅读(436)  评论(0编辑  收藏  举报