- 论坛徽章:
- 32
|
回复 14# bikkuri
根据我的perl脚本改写的awk脚本:- #!/bin/awk -f
- BEGIN {
- srand()
- s="o"
- for(i=0;i++<100;){
- l=split(s,a,"")
- for(j=0;j++<l;){
- r=rand()
- if(r<1/10){
- a[j]="."
- }else if(r<2/10){
- if(a[j]=="8")a[j]="o."
- }else{
- if(a[j]=="8")a[j]="oo"
- if(a[j]=="0")a[j]="8"
- if(a[j]=="o")a[j]="0"
- }
- }
- s=""
- for(j=0;j++<=l;)s=s!=""?s""a[j]:a[j]
- b[i]=s
- printf "[%d]\t%s\n",i,s
- if(s~/^\.+$/)exit
- system("sleep 1")
- }
- for(i=0;i++<10;)printf "-----"
- print "\n\t[.]\t[o]\t[0]\t[8]\t[.o08]"
- for(i=0;i++<length(b);){
- f5=length(b[i])
- f4=gsub(/8/,"",b[i])
- f3=gsub(/0/,"",b[i])
- f2=gsub(/o/,"",b[i])
- f1=f5-f4-f3-f2
- printf "[%d]:\t%d\t%d\t%d\t%d\t%d\n",i,f1,f2,f3,f4,f5
- }
- }
复制代码 效率测试:- [root@localhost ~]# time ./a > a.r
- real 1m43.244s
- user 0m1.535s
- sys 0m1.153s
- [root@localhost ~]# wc a.r
- 202 806 297136 a.r
- [root@localhost ~]# time ./p > p.r
- real 1m40.743s
- user 0m0.251s
- sys 0m0.036s
- [root@localhost ~]# wc p.r
- 202 806 84208 p.r
- [root@localhost ~]#
复制代码 从上面的数据可知,awk的效率不比perl低。
|
|