2024年11月Linux如何使用awk进行数组排序(2)

发布时间:

  ⑴#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的数组排序,可选择任一方法实现。