功能:统计日志中包含特定字符串的行数
#!/bin/bash
#输入参数:要查询的开始日期,要查询的结束日期 例如: sh count.sh 20160625 20160703 注:区间不得超过15天
datebeg=$1
dateend=$2
#echo $datebeg
#echo $dateend
if [ ! -n "$datebeg" ]; then
echo '请输入开始日期'
exit 2
fi
if [ ! -n "$dateend" ]; then
echo '请输入结束日期'
exit 2
else
beg_s=`date -d "$datebeg" +%s`
end_s=`date -d "$dateend" +%s`
duringday=`expr $end_s - $beg_s`
duringday=`expr $duringday / 86400`
if [ $duringday -gt 15 ];then
echo '输入日期区间过大'
exit 3
fi
search_allcount=0
while [ "$beg_s" -le "$end_s" ]
do
thisdate=`date -d @$beg_s +%Y%m%d`
#echo $thisdate
thisday=`date -d @$beg_s +%m%d`
#echo $thisday
search=`grep -c 'search words' $thisday.log`
#Today=`date -d $thisdate +%Y%m%d`
echo "$thisdate搜索总量$search"
search_allcount=`expr $search_allcount + $search`
beg_s=$((beg_s+86400))
done
fi
echo "总量$search_allcount"
感想:shell的风格在赋值时不能有空格,数学运算需加上expr,if条件用中口号,大小比较需用字母表示,等等,这些需要刚写shell的时候注意下