shell中awk脚本编写碰到的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:07:36
在如下格式的日志中:
[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



要求通过输入一个或多个日期(20091114这样的格式),来判断成功发送了多少次,以前光看教程了,没实际写过脚本,这次是第一次写,写了半天没成功,哪位高手能指点下,给个例子。谢谢

写一个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

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]