awk中遍歷數組的2種方式


    awk中數組比較隨意,同一個數組中的元素不一定要相同類型,而且數組下表可以是數字也可以是字符。

    遍歷數組有兩種方式:


1. 類似於C++的方式

#-----------------------------/chapter11/ex11-30.sh------------------
#! /bin/awk -f

BEGIN {
   #定義數組
   stu[1]="200200110"
   stu[2]="200200164"
   stu[3]="200200167"
   stu[4]="200200168"
   stu[5]="200200172"

   #計算數組的長度
   len=length(stu)
   
   #通過循環遍歷數組
   for(i=1;i<=len;i++)
   {
       print i,stu[i]
   }
}

注意:這種方式需要先計算得到數組的長度,這可以使用length()函數,前面提到length也可以用來計算字符串的長度,這裏還可以用來計算數組的長度,length括號裏的參數是數組名稱,返回的是數組的長度。

還有,數組的下標是從1開始計算,這點和C++, java不同。


2. 使用in命令

#-----------------------------/chapter11/ex11-31.sh------------------
#! /bin/awk -f

BEGIN {
   #定義數組
   arr[1]="Tim"
   arr[2]="John"
   arr["a"]=12
   arr[3]=3.1415
   arr[4]=5
   arr[99]=23

   #遍歷數組
   for(n in arr)
   {
      print arr[n]
   }
}

分析:for循環語句中使用in命令,也是可以遍歷出數組的所有元素。但是,輸出的順序不再按照數組定義的順序。如果要按照順序遍歷數組,必須使用第一種方式來遍歷數組。

但是,當定義數組的時候下標不是統一爲數字的話,那麼我們無法使用上面方式來遍歷,只能使用in命令來遍歷。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章