写一个sh文件吧(命名为count.sh)
代码如下:
cnt=`cat $1 |awk '{if(sunstr($1,2,8)=='$2')print $0;}'|wc -l`
保存运行,需要输入两个参数:日志文件名和日期,记得修改脚本权限(chmod +x count.sh)
如果需要增加容错性,可在代码开头增加以下判断
if [ -z "$1" ];then
echo "请输入日志名"
exit 0;
fi
if [ -z "$2" ];then
echo "请输入要判断的日期"
exit 0;
fi
if [ `echo $2|awk '{printf("%d",length($1));}'` -ne 8 ];then
echo "请输入正确的日期"$2
exit 0;
fi
想用awk写是把
awk '{a[$1]++}END{for(i in a)print i,a[i]/2}' logfile|grep 20091114
大概就是这个意思,没有实际操作可能有错误
另外〔头没有删掉,另外也不能判断失败,就是单日发送了多少次而已 需要你在修改一下
根据你的要求,如是,也不必用awk
nc10@your-5554c55be4 ~
$ cat data
[20091114 08:30:49] get 1 record! #63374
[20091114 08:30:58] 发送成功 : 63374
[20091114 09:49:55] get 1 record! #63378
[20091114 09:50:03] 发送成功 : 63378
[20091115 08:30:49] get 1 record! #63374
[20091115 08:30:58] 发送成功 : 63374
[20091116 09:49:55] get 1 record! #63378
[20091116 09:50:03] 发送成功 : 63378
[20091117 08:30:49] get 1 record! #63374
[20091117 08:30:58] 发送成功 : 63374
[20091117 09:49:55] get 1 record! #63378
[20091117 09:50:03] 发送成功 : 63378
[20091117 08:30:49] get 1 record! #63374
[20091117 08:30:58] 发送成功 : 63374
[20091118 09:49:55] get 1 record! #63378
[20091118 09:50:03] 发送成功 : 63378
nc10@your-5554c55be4 ~
$ cat a
#! /bin/bash
file="data" # adjust the filename fit your need
for i
do
wanted=$(grep "$i" "$file")
success=$(echo "$wanted" | grep '发送成功' | wc -l)
echo -e "$i\t\t发送成功: $success"
done
nc10@your-5554c55be4 ~
$ ./a 20091114 20091117
20091114 发送成功: 2
20091117 发送成功: 3
nc10@your-5554c55be4 ~
$
学shell脚本不必拘泥於某一样工具,完成任务就可