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

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”。

  數組相關函數

  [[email protected]~]$awk--version

  GNUAwk3.1.5

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

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

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

  44

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

  (asort使用):

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

  4

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

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

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

  4test

  1it

  2is

  3a

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

  [[email protected]~]$awk'BEGIN{info="itisatest";tlen=split(info,tA,"");for(k=1;k<=tlen;k++){printk,tA[k];}}'   1it   2is   3a   4test   注意:數組下標是從1開始,與c數組不一樣。   判斷鍵值存在以及刪除鍵值:   一個錯誤的判斷方法:   [[email protected]~]$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,就會自動創建改序列.   正確判斷方法:   [[email protected]~]$awk'BEGIN{tB["a"]="a1";tB["b"]="b1";if("c"intB){print"ok";};for(kintB){printk,tB[k];}}'   aa1   bb1   if(keyinarray)通過這種方法判斷數組中是否包含”key”鍵值。   刪除鍵值:   [[email protected]~]$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)   [[email protected]~]$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]引用獲得數組內容.   方法二:   [[email protected]~]$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技術的優質平臺!

抱歉!評論已關閉.

奔驰宝马破解版下载 怎么配资炒股 安微11选5最新开奖 网易股票行情中心手机版 湖北11选五一定牛结果 彩发发pk10软件手机版下载 快三技巧选号 天津快乐十分钟的走势图 甘肃体育彩票 11选5 特发信息股票 北京pk10定位胆怎么玩的 10BET娱乐城真人百家乐赌博 下载福建11选五走势图 宁夏今天十一选五开奖 贵州快3开奖历史 下载幸运快三官网 美国股票行情今天大盘