⑴#arr 传入一维数组 《/p》 《p》#key 排序类型 是按照值排序 按照键值 《/p》 《p》#datatype 比较类型 按照数字排序 按照字符串排序 《/p》 《p》#tarr 排序返回的数组 《/p》 《p》#splitseq 分割字符串 数组中键与值之间分割字符串 《/p》 《p》#return 数组长度 《/p》 《p》#实现思路,将原始数组a[‘a’]= 排序后变成 a[]=a分隔符 ,然后按照下标递归显示内容。 本排序使用冒泡方式进行。 《/p》 《p》 《/p》 《p》function sortArr(arr,key,datatype,tarr,splitseq
⑵{ 《/p》 《p》 if(key ~ /[^-]/
⑶{return tarr;}
⑷for(k in arr
⑸tarr[++alen]=(k“”splitseq“”arr[k];
⑹} 《/p》 《p》 for(m=;m《=alen;m++
⑺for(n=;n《=alen-m-;n++
⑻split(tarr[m],tm,splitseq;
⑼split(tarr[n+],tn,splitseq; 《/p》 《p》 tnum=tarr[m];
⑽if(datatype==
⑾if(tm[key]+《tn[key]+
⑿tarr[m]=tarr[n+];
⒀tarr[n+]=tnum;
⒁if((tm[key]“” 《 (tn[key]“”
⒂tarr[m]=tarr[n+];
⒃tarr[n+]=tnum;
⒄return alen;
⒅[chengmocentos ~]$ awk ‘BEGIN{
⒆a[“a”]=;
⒇a[“b”]=;
⒈a[“c”]=;
⒉splitseq=“%%”;
⒊alen=sortArr(a,,,tarr,splitseq;
⒋for(m=;m《=alen;m++
⒌split(tarr[m],ta,splitseq;
⒍print m,ta[],ta[];
⒎function sortArr(arr,key,datatype,tarr,splitseq
⒏{ 《/p》 《p》 if(key ~ /[^-]/
⒐{return tarr;}
⒑for(k in arr
⒒tarr[++alen]=(k“”splitseq“”arr[k];
⒓} 《/p》 《p》 for(m=;m《=alen;m++
⒔for(n=;n《=alen-m-;n++
⒕split(tarr[m],tm,splitseq;
⒖split(tarr[n+],tn,splitseq; 《/p》 《p》 tnum=tarr[m];
⒗if(datatype==
⒘if(tm[key]+《tn[key]+
⒙tarr[m]=tarr[n+];
⒚tarr[n+]=tnum;
⒛if((tm[key]“” 《 (tn[key]“”
①tarr[m]=tarr[n+];
②tarr[n+]=tnum;
③return alen;
④’ 《/p》 《p》 b
⑤上面就是Linux使用awk进行数组排序的方法介绍了,本文一共介绍了种方法,每种方法都能够实现awk的数组排序,可选择任一方法实现。