2014-02-11 43 views
2

目前關聯數組,我在努力尋找解決以下任一問題:轉換索引數組到擊

  1. 如何轉換正常陣列(索引數組索引從0開始)轉換爲一個關聯數組,其中的值成爲一個鍵,值本身就是該值。
  2. 從其中鍵值爲索引的數組中創建一個新的關聯數組。這在一個單一的聲明。我知道它可以很好地使用循環來完成,但對於包含近500,000個元素的巨大數組,循環是開銷。
  3. 從mysql sql查詢的結果中創建一個assoc數組。我通常創建如下一個MySQL的SQL查詢結果索引數組:

    mapfile -t a_dummy <<< "$(mysql -u root –disable-column-names –silent -B -e "select * from dummy_tbl;" "$DB_NAME")

其中$ db_name是變量指向DB名字符串

+0

awk的數組是關聯數組,請看看它是否可以幫助你。 – BMW

+0

您可能最好使用shell以外的語言來執行此類數據處理。 – chepner

回答

2

這裏有一種方法,使用sed請注意,這隻適用於原始數組中沒有元素包含空格的情況。

declare -A "newArray=($(echo ${oldArray[@]} | sed 's/[^ ]*/[&]=&/g'))" 

sed命令採用每個數組元素'x'並將其替換爲字符串'[x] = x',適用於關聯數組賦值。