首页 > 代码库 > 一个日志按照小时的格式化输出脚本

一个日志按照小时的格式化输出脚本

#!/bin/bash#使用前请先创建一个路径文件夹/tmp/weblog#确定当前时间,即脚本执行日的0时time=`date "+%y%m%d:%H"`#定位日志时间格式为:20140624:00date1="20$time"#开启死循环,每小时筛选一次日志,并输出while :;do#获取当前时间,作为每次循环的1小时日志名    n=`date`#记录循环次数变量count    count=0#等待日志输出3600,即1小时    sleep 3600#获取1小时后,此时日志的末行    date2=`tail -1 log`#用sed获取此次循环中,这个1小时日志的两端数据,以便于获取到1小时的日志区间    sed -n /"$date1"/,/"$date2"/p log > /tmp/weblog/$n.log#用awk将这个1小时的日志进行格式化,并输出到一天的日志webc.log    awk BEGIN{printf "%-10s %-10s\n","time","avg_time"}$NF ~ /^[0-9]/{sum+=$NF;n++}END{printf "%-10s %-10s\n", sum,sum/n} $n.log >> /tmp/weblog/webc.log#将本次循环的1小时末端数据作为下次循环的开端数据    date1=$date2#循环次数+1    count=$[ $count+1 ]#若次数为24,说明一天结束,将webc.log改名为当天日期名,并放到/home下    [ $count -eq 24 ] && mv /tmp/weblog/webc.log /home/web_`date +F`.log    done