#!/bin/bash #时间配置 startime="2016-10-09 09:00" endtime="2016-10-09 11:00" #指定日志文件 logfile=$PWD/svrs.log #关键字列表 keywordlist=$PWD/keylist.txt #结果文件 result=$PWD/result.txt #日志临时文件 tmpfile=$PWD/keytmp.tmp #把开始时间和结束时间放到 日志临时文件 sed -n "/^$startime/,/^$endtime/ p" $logfile >$tmpfile #清空临时文件 >$result #读取关键字列表,并作为参数传入循环 for keyword in `cat $keywordlist|xargs`; do #统计关键字数量 keynum=`grep -c "$keyword" $tmpfile` #把关键字结果作为打印屏幕并写如结果文件 echo -e "$keyword:\t$keynum" >>$result done
完善下
获取当前日期赋值给变量:startime="`date +%Y-%m-%d` 09:00", 这条命令中“=”号左右不能有空格,不然这条命令无法执行
bin/bash #时间配置 #startime="2016-10-14 09:00" #endtime="2016-10-14 11:00" startime="`date +%Y-%m-%d` 09:00" endtime="`date +%Y-%m-%d` 11:00" #指定日志文件 logfile=$PWD/svrs.log #关键字列表 keywordlist=$PWD/keylist.txt #结果文件 result=$PWD/result.txt #日志临时文件 tmpfile=$PWD/keytmp.tmp sed -n "/^$startime/,/^$endtime/ p" $logfile >$tmpfile >$result for keyword in `cat $keywordlist|xargs`; do keynum=`grep -c -w "$keyword" $tmpfile` echo -e "$keyword:\t$keynum" >>$result echo -e "$keyword:\t$keynum" done