日期:2014-05-16  浏览次数:20723 次

awk数组问题
#!/bin/awk -f
BEGIN{
  record="123#456#789#abc#def#gh#A#B#C#D";
  split(record,tarray,"#")
}
END {
  for (i in tarray) { print tarray[i] }
}
执行程序输出如下:
awktest.awk /dev/null
abc
def
gh
A
B
C
D
123
456
789
请教为什么输出数组的前3个元素,放到最后。而不是最前?


------解决方案--------------------
貌似awk中使用for ( i in array)这种方式遍历数组, 采用的是乱序方式 不确定顺序的 
可做如下修改
C/C++ code

#!/bin/awk -f
BEGIN{
        record="123#456#789#abc#def#gh#A#B#C#D";
        split(record,tarray,"#")
}
END {
        for (i=1;i<=length(tarray);i++) { print tarray[i] }
}

------解决方案--------------------
2.length是计算字符串长度,不能计算数组的长度;
------------------------------------
拜托你测试一下 好不好?
------解决方案--------------------
果然!
------解决方案--------------------
不同的操作系统对于length的解释也有差异吧

在Aix下面测试length直接报语法错误了~

能出正确结果就可以了

LZ结贴吧
------解决方案--------------------
mark