每天一道编程题(7)

1. 统计test.log日志文件中登录失败的次数占整个登录次数的百分比。其中Result:1代表登录成功,Result:114或者其他值均代表登录失败。test.log内容如下:

Name:test01     UserID:13345666deet     Username:test001        Result:1        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test02     UserID:1334566etweet    Username:test002        Result:1        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test03     UserID:135678666deet    Username:test003        Result:0        OnlineTime:0    NickName:       Gnder:1         Pcks:1
Name:test04     UserID:13323566deet     Username:test004        Result:1        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test05     UserID:45677666deet     Username:test005        Result:0        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test06     UserID:1788966deet      Username:test006        Result:1        OnlineTime:0    NickName:       Gnder:1         Pcks:1
Name:test08     UserID:1234445666deet   Username:test007        Result:1        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test09     UserID:1124345666deet   Username:test008        Result:1        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test09     UserID:111234666deet    Username:test009        Result:0        OnlineTime:0    NickName:       Gnder:0         Pcks:1
Name:test10     UserID:13348666deet     Username:test010        Result:1        OnlineTime:0    NickName:       Gnder:1         Pcks:1

    使用awk:

cat test.log |awk -F '\t' '{print $4}' | awk -F ':' -v success=0 '{if($2=="1"){success++}}END{printf("Success  %d,Total  %d,Failure rate is %.2f%\n",success,NR,(NR-success)/NR*100)}'

 2. 传入至少三个数字参数到脚本file,并计算出最大,最小,平均值。需要判断传入的数字是否足够,否则输出警告信息。平均值保留两位小数。 

     

#!/bin/sh
if [ $# != 3 ];then
   echo "Please Enter 3 numbers!"
   exit 1
else
   if [[ $1 =~ ^-?[1-9][0-9]*$ && $2 =~ ^-?[1-9][0-9]*$ && $3 =~ ^-?[1-9][0-9]*$ ]];then
       max=$((( $1 > $2 )? $1 : $2 ))
       max=$(( ($max > $3)?$max:$3))
       min=$[($1<$2)?$1:$2]
       min=$[($3<$min)?$3:$min]
       aver=$[($1+$2+$3)/3]
       echo "Max is $max,Min is $min,Average is $aver"
   else
       echo "Please input integer number"
   fi
fi

     注意空格,=~是判断字符串的包含关系。[[]]与[]是不同的,在前一个中,关系运算符且只能为&&,if判断具体见如下参考:http://blog.csdn.net/sunboy_2050/article/details/6836382

猜你喜欢

转载自yeluowuhen.iteye.com/blog/2275446