現在的位置: 首頁 > 演算法 > 正文

linuxawk數組怎麼定義? linuxawk數組怎麼使用

2020年05月25日 演算法 ⁄ 共 989字 ⁄ 字型大小 評論關閉

  用awk進行文本處理,少不了就是它的數組處理。那麼awk數組有那些特點,一般常見運算又會怎麼樣呢。下面學步園小編來講解下linuxawk數組怎麼定義?linuxawk數組怎麼使用?

  linuxawk數組怎麼定義

  1:可以用數值作數組索引(下標)

  Tarray[1]=「chengmo」

  Tarray[2]=「800927」

  2:可以用字元串作數組索引(下標)

  Tarray[「first」]=「cheng」

  Tarray[「last」]=」mo」

  Tarray[「birth」]=」800927」

  使用中printTarray[1]將得到」chengmo」而printTarray[2]和print[「birth」]都將得到」800927」。

  數組相關函數

  [chengmo@localhost~]$awk--version

  GNUAwk3.1.5

  使用版本是:3.1以上,不同版本下面函數不一定相同

  得到數組長度(length方法使用)

  [chengmo@localhost~]$awk'BEGIN{info="itisatest";lens=split(info,tA,"");printlength(tA),lens;}'

  44

  length返回字元串以及數組長度,split進行分割字元串為數組,也會返回分割得到數組長度。

  (asort使用):

  [chengmo@localhost~]$awk'BEGIN{info="itisatest";split(info,tA,"");printasort(tA);}'

  4

  asort對數組進行排序,返回數組長度。

  輸出數組內容(無序,有序輸出):

  [chengmo@localhost~]$awk'BEGIN{info="itisatest";split(info,tA,"");for(kintA){printk,tA[k];}}'

  4test

  1it

  2is

  3a

  for…in輸出,因為數組是關聯數組,默認是無序的。所以通過for…in得到是無序的數組。如果需要得到有序數組,需要通過下標獲得。

  [chengmo@localhost~]$awk'BEGIN{info="itisatest";tlen=split(info,tA,"");for(k=1;k<=tlen;k++){printk,tA[k];}}'   1it   2is   3a   4test   注意:數組下標是從1開始,與c數組不一樣。   判斷鍵值存在以及刪除鍵值:   一個錯誤的判斷方法:   [chengmo@localhost~]$awk'BEGIN{tB["a"]="a1";tB["b"]="b1";if(tB["c"]!="1"){print"nofound";};for(kintB){printk,tB[k];}}'   nofound   aa1   bb1   c   以上出現奇怪問題,tB[「c」]沒有定義,但是循環時候,發現已經存在該鍵值,它的值為空,這裡需要注意,awk數組是關聯數組,只要通過數組引用它的key,就會自動創建改序列.   正確判斷方法:   [chengmo@localhost~]$awk'BEGIN{tB["a"]="a1";tB["b"]="b1";if("c"intB){print"ok";};for(kintB){printk,tB[k];}}'   aa1   bb1   if(keyinarray)通過這種方法判斷數組中是否包含」key」鍵值。   刪除鍵值:   [chengmo@localhost~]$awk'BEGIN{tB["a"]="a1";tB["b"]="b1";deletetB["a"];for(kintB){printk,tB[k];}}'   bb1   deletearray[key]可以刪除,對應數組key的,序列值。   linuxawk數組怎麼使用   awk的多維數組在本質上是一維數組,更確切一點,awk在存儲上並不支持多維數組。awk提供了邏輯上模擬二維數組的訪問方式。例如,array[2,4]=1這樣的訪問是允許的。awk使用一個特殊的字元串SUBSEP(\034)作為分割欄位,在上面的例子中,關聯數組array存儲的鍵值實際上是2\0344。   類似一維數組的成員測試,多維數組可以使用if((i,j)inarray)這樣的語法,但是下標必須放置在圓括弧中。   類似一維數組的循環訪問,多維數組使用for(iteminarray)這樣的語法遍曆數組。與一維數組不同的是,多維數組必須使用split()函數來訪問單獨的下標分量。split(item,subscr,SUBSEP)   [chengmo@localhost~]$awk'BEGIN{   for(i=1;i<=9;i++)   {   for(j=1;j<=9;j++)   {   tarr[i,j]=i*j;   printi,"*",j,"=",tarr[i,j];   }   }   }'   1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   ……   可以通過array[k,k2]引用獲得數組內容.   方法二:   [chengmo@localhost~]$awk'BEGIN{   for(i=1;i<=9;i++)   {   for(j=1;j<=9;j++)   {   tarr[i,j]=i*j;   }   }   for(mintarr)   {   split(m,tarr2,SUBSEP);   printtarr2[1],"*",tarr2[2],"=",tarr[m];   }   }'   以上就是關於「linuxawk數組怎麼定義?linuxawk數組怎麼使用」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!

抱歉!評論已關閉.