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命令来遍历。

时间: 2024-10-28 15:30:18

awk中遍历数组的2种方式的相关文章

java中遍历集合的三种方式

集合遍历操作的三种方式 Iterator迭代器方式 增强for循环 普通for循环 代码如下: public static void test3(){ ArrayList list = new ArrayList(); list.add(123); list.add("AAAA"); list.add("bb"); list.add(new String("JavaEE")); list.add(new Date()); list.add(fal

lua中遍历table的几种方式比较

在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历.当然你还会说

js中遍历数组、对象的方式

1.标准的for循环遍历数组 var array = [1,2,3,4,5,6,7]; for (var i = 0; i < array.length; i) { console.log(i,array[i]); } 2.for in 遍历对象 for in 以任意顺序遍历一个对象的可枚举属性. 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行 for 循环 (或者使用 Array.prototype.forEach() 或 for...of 循环) . 一般常用来遍历非数组的对

js中创建数组的两种方式

第一种方式:var  array1=new Array(); 第二种方式:var array2=[元素1,元素2,元素3...]; 解析:当只传入一个元素并且是unmber时,这个元素代表的是数组长度. 说明:在JS中有空间在未使用之前,这个空间的类型是不确定的:导致什么类型的数据都可以给其中存放.

JavaScript中清空数组的三种方式

方式1,splice 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 Array[0],空数组,即被清空了 方式2,length赋值为0 这种方式很有意思,其它语言如Java,其数组的length是只读的,不能被赋值.如 1 2 int[] ary = {1,2,3,4}; ary.length = 0; Java中会报错,编译通不过.而JS中则可以,且将数组清空了, 1 2 3 var a

VBA遍历数组的2种方式

1.情景展示 VBA编程,如何对数组进行遍历? 2.解决方案 方式一:使用for循环 Sub 遍历数组1() '声明一个变量 Dim Arr As Variant '声明一个数字变量 Dim i As Integer '变量类型指定为数组并赋值 Arr = Array(1, 2, 3, 4, 5) '使用For...To...进行遍历 For i = 0 To UBound(Arr) Debug.Print Arr(i) '可以修改数组 Arr(i) = Rnd Next i End Sub 方

Java中遍历Map的四种方式

Demo如下 Map<String, String> map = new HashMap<>(); map.put("key1","data1"); map.put("key2","data2"); map.put("key3","data3"); //第一种方式 System.out.println("通过Map.keySet(),遍历key,valu

Java中遍历ConcurrentHashMap的四种方式

//方式一:在for-each循环中使用entries来遍历 System.out.println("方式一:在for-each循环中使用entries来遍历"); for(Map.Entry<String, String> entry: map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

JavaScript中检测数组的几种方式

检测一个对象是否为数组的方式有: Array.isArray()         // true或false(es5) toString.call([]);      // [object Array] arr.constructor;      // Array() instanceof Array   // true或false 兼容性写法: if(typeof Array.isArray==="undefined"){ Array.isArray = function(arg){