2012-06-24 61 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