昨天做了一个shell脚本,功能是统计车辆浏览日志文件中,单个车辆每月的浏览量。shell脚本以前也写过不少,间隔的时间稍微一长,就忘个七七八八了,趁现在还记得,把这个脚本记下来!
车辆浏览日志
2016,10,17,15,43,47,124.114.150.138,939016062400100001532,10552003
2016,10,17,15,58,20,124.114.150.138,939016091400104306127,10502023
2016,10,17,16,03,16,124.114.150.138,939016091400104306182,10501011
脚本文件
source ~/.bash_profile
export SCRIPT=/usr/batch
export LOGPATH=/usr/LOG
export ENV_NM="test-pc"
#获取上个月的年月信息,类似201609,因为日志文件以年月命名
month=`date -d "last month" +%Y%m`
logname=id."$month".log
#打开脚本目录
cd $SCRIPT
#判断日志文件是否存在
if [ -f "$LOGPATH/$logname" ]; then
#awk使用逗号分隔文件的每行,并去掉重复,存入id.tmp文件
cat $LOGPATH/$logname |awk -F "," '{print $8}'|sort -u > id.tmp
echo $month "车辆统计信息" > result.txt
#循环遍历,在日志中查找车辆id的出现次数,并将结果存入result.txt
for i in `cat id.tmp`
do
count=`cat $LOGPATH/$logname |grep $i |wc -l`
echo "车辆id"$i" 浏览量为 "$count" 次" >> result.txt
done
rm -f $SCRIPT/id.tmp
else
echo "LOG file ERROR" > result.txt
fi
#打开日志目录
cd $LOGPATH
#删除一年前的日志文件
find -maxdepth 1 -mtime +365 -type f -name 'id.*.log' -exec rm {} \;
#如果日志文件是多个月份混合在一个文件当中,可以提取需要的月份产生需要的文件
#比如我想要今年9月份的就这样
cat id.full.log |sed -rn '/2016\,09/p' > id.201609.txt
以后学到新的知识点就记录下来,希望可以坚持记录~~~