首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

awk数组有关问题

2012-02-11 
awk数组问题#!/bin/awk -fBEGIN{record123#456#789#abc#def#gh#A#B#C#Dsplit(record,tarray,#)}END{

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

热点排行