<tbody id="xj1oc"></tbody>

    <bdo id="xj1oc"></bdo><bdo id="xj1oc"><optgroup id="xj1oc"><thead id="xj1oc"></thead></optgroup></bdo>

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

    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技術的優質平臺!

    抱歉!評論已關閉.

    黄色电影网址