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