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

#!/bin/bash
#使用前请先创建一个路径文件夹/tmp/weblog
#确定当前时间,即脚本执行日的0时
time=`date "+%y%m%d:%H"`
#定位日志时间格式为:20140624:00
date1="20$time"
#记录循环次数变量count
count=0 #开启死循环,每小时筛选一次日志,并输出
while :;do #获取当前时间,作为每次循环的1小时日志名 n=`date` #等待日志输出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 ","time","avg_time"}$NF ~ /^[0-9]/{sum+=$NF;n++}END{if(n != 0)printf "%-10s %-10s ", 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 && count=0 done
[星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
原文地址:https://www.cnblogs.com/aaa103439/p/3805215.html