读书人

awk数组有关问题

发布时间: 2012-02-11 09:51:34 作者: rapoo

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 -fBEGIN{        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

读书人网 >UNIXLINUX

热点推荐