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