昨天做了一個shell腳本草丧,功能是統(tǒng)計(jì)車輛瀏覽日志文件中,單個車輛每月的瀏覽量莹桅。shell腳本以前也寫過不少昌执,間隔的時間稍微一長,就忘個七七八八了统翩,趁現(xiàn)在還記得仙蚜,把這個腳本記下來!
車輛瀏覽日志
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委粉,因?yàn)槿罩疚募阅暝旅?month=`date -d "last month" +%Y%m`
logname=id."$month".log
#打開腳本目錄
cd $SCRIPT
#判斷日志文件是否存在
if [ -f "$LOGPATH/$logname" ]; then
#awk使用逗號分隔文件的每行,并去掉重復(fù)娶桦,存入id.tmp文件
cat $LOGPATH/$logname |awk -F "," '{print $8}'|sort -u > id.tmp
echo $month "車輛統(tǒng)計(jì)信息" > result.txt
#循環(huán)遍歷贾节,在日志中查找車輛id的出現(xiàn)次數(shù),并將結(jié)果存入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 {} \;
#如果日志文件是多個月份混合在一個文件當(dāng)中衷畦,可以提取需要的月份產(chǎn)生需要的文件
#比如我想要今年9月份的就這樣
cat id.full.log |sed -rn '/2016\,09/p' > id.201609.txt
以后學(xué)到新的知識點(diǎn)就記錄下來栗涂,希望可以堅(jiān)持記錄~~~