2012-06-24 147 views
0

我打算使用AWK多维数组,我存储格式的细节,细节在AWK遍历多维数组

下面

CODE

arr[customer1,account1] 
arr[customer1,account2] 
arr[customer2,account1] 
arr[customer2,account2] 

我只需要知道,我将如何遍历这个并打印结果。另外我在shell脚本程序中使用这个awk,所以我想知道我是否能够在shell脚本中使用相同的数组,如果是的话,如何转移它。我在很多地方搜索过,我无法为此找到正确的解决方案。你可以帮助我吗?谢谢。

+0

数组无法从AWK传输到shell。您可以打印AWK脚本中的值并将它们读入shell中的数组(例如支持数组的Bash)。请注意,Bash不支持多维数组而没有丑陋的黑客攻击,并且在版本4之前它不支持关联数组。或者你可以用AWK编写整个脚本,并且可以完全访问数组。 –

回答

1

来自多维数组的键用值SUBSEP变量分隔,用它来拆分它们。像这样遍历数组:

for (key in arr) { 
    split(key, values, SUBSEP) 
    ## values[1] -> First value of the multidimensional array. 
    ## values[2] -> Second value of the multidimensional array. 
} 
+0

谢谢你的回答。在我的情况下,我会改变我的论点,因此我认为它是空间。我使用像下面的awk'{FS =“=”; if($ 1〜/ Hi /){customer = $ 2;} else if($ 1〜/ bye /){split($ 2,g,“[\”] “); h [customer,g [2]] ++;} END {for(key in arr){split(key,values,”“)print values [1],values [2],h [values [1 ],values [2]]}} ...但是我在这里得到一个错误.. – User

+0

@User:我看不到你的错误,但是'SUBSEP'默认不是空格,它是'\ 034' ,一个罕见的和不可见的字符 – Birei

+0

所以我可以用\ 034替换空格,并且是我的方法来打印正确的值... – User