awk數(shù)組排序多種實現(xiàn)方法

awk數(shù)組排序多種實現(xiàn)方法

ID:8811193

大?。?11.00 KB

頁數(shù):8頁

時間:2018-04-08

awk數(shù)組排序多種實現(xiàn)方法_第1頁
awk數(shù)組排序多種實現(xiàn)方法_第2頁
awk數(shù)組排序多種實現(xiàn)方法_第3頁
awk數(shù)組排序多種實現(xiàn)方法_第4頁
awk數(shù)組排序多種實現(xiàn)方法_第5頁
資源描述:

《awk數(shù)組排序多種實現(xiàn)方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、[chengmo@localhost~]$awk'BEGIN{info="thisisatest";slen=split(info,tA,"");for(i=1;i<=slen;i++){printi,tA[i];}}'????1this2is3a4test?一、通過內(nèi)置函數(shù)(asort,asorti使用)awk3.1以上版本才支持?asort使用說明srcarrlen=asort[srcarr,dscarr]默認返回值是:原數(shù)組長度,傳入?yún)?shù)dscarr則將排序后數(shù)組賦值給dscarr.?[chengm

2、o@localhost~]$awk'BEGIN{a[100]=100;a[2]=224;a[3]=34;slen=asort(a,tA);for(i=1;i<=slen;i++){printi,tA[i];}}'13421003224?asort只對值進行了排序,因此丟掉原先鍵值。?2、asorti使用說明?[chengmo@localhost~]$awk'BEGIN{a["d"]=100;a["a"]=224;a["c"]=34;slen=asorti(a,tA);for(i=1;i<=slen;i++

3、){printi,tA[i],a[tA[i]];}}'1a2242c343d100?asorti對鍵值進行排序(字符串類型),將生成新的數(shù)組放入:tA中。?二、通過管道發(fā)送到sort排序?[chengmo@localhost~]$awk'BEGIN{a[100]=100;a[2]=224;a[3]=34;for(iina){printi,a[i]

4、"sort-r-n-k2";}}'2224100100334?通過管道,發(fā)送到外部程序“sort”排序,-r從大到小,-n按照數(shù)字排序,-k2以第2列排序。通過

5、將數(shù)據(jù)丟給第3方的sort命令,所有問題變得非常簡單。如果以key值排序–k2變成-k1即可。?[chengmo@localhost~]$awk'BEGIN{a[100]=100;a[2]=224;a[3]=34;for(iina){printi,a[i]

6、"sort-r-n-k1";}}'1001003342224?三、自定義排序函數(shù)?awk自定義函數(shù)結(jié)構(gòu):functionfunname(p1,p2,p3)?{???staction;???returnvalue;?}?以上是:awk自定義函數(shù)表示方式,

7、默認傳入?yún)?shù)都是以引用方式傳入,return值,只能是字符型或者數(shù)值型。不能返回數(shù)組類型。如果返回數(shù)組類型。需要通過形參方式傳入。再獲得。?awk返回數(shù)組類型?awk'functiontest(ary){?for(i=0;i<10;i++){?ary[i]=i;?}?returni;}BEGIN{?n=test(array);?for(i=0;i

8、排序2按照字符串排序?#tarr排序返回的數(shù)組?#splitseq分割字符串數(shù)組中鍵與值之間分割字符串?#return數(shù)組長度?#實現(xiàn)思路,將原始數(shù)組a[‘a(chǎn)’]=100排序后變成a[1]=a分隔符100,然后按照下標遞歸顯示內(nèi)容。本排序使用冒泡方式進行。???functionsortArr(arr,key,datatype,tarr,splitseq){???if(key~/[^1-2]/)???{returntarr;}??for(kinarr)??{???tarr[++alen]=(k""split

9、seq""arr[k]);??}???for(m=1;m<=alen;m++)??{????for(n=1;n<=alen-m-1;n++)????{??????split(tarr[m],tm,splitseq);??????split(tarr[n+1],tn,splitseq);?????????tnum=tarr[m];??????if(datatype==1)??????{????????if(tm[key]+0

10、r[n+1];???????????tarr[n+1]=tnum;????????}??????}??????else??????{????????if((tm[key]"")<(tn[key]""))????????{???????????tarr[m]=tarr[n+1];???????????tarr[n+1]=tnum;????????}??????}????}??}??returnalen;}???完整代碼如下:?[

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。