在Bash中将索引数组转换为关联数组

在Bash中将索引数组转换为关联数组,bash,associative-array,Bash,Associative Array,目前,我正在努力找到以下问题的解决方案: 如何将普通数组(索引从0开始的索引数组)转换为关联数组,其中值变为键,值本身就是值 从值为键的索引数组创建新的assoc数组。这是一个单一的声明。我知道使用循环可以很好地完成,但对于包含近500000个元素的大型数组,循环是一种开销 根据mysql sql查询的结果创建一个assoc数组。我通常根据mysql sql查询结果创建索引数组,如下所示: mapfile-tau dummy这里有一种方法,使用sed。但是,请注意,只有在原始数组中的元素都不包含

目前,我正在努力找到以下问题的解决方案:

  • 如何将普通数组(索引从0开始的索引数组)转换为关联数组,其中值变为键,值本身就是值
  • 从值为键的索引数组创建新的assoc数组。这是一个单一的声明。我知道使用循环可以很好地完成,但对于包含近500000个元素的大型数组,循环是一种开销
  • 根据mysql sql查询的结果创建一个assoc数组。我通常根据mysql sql查询结果创建索引数组,如下所示:


    mapfile-tau dummy这里有一种方法,使用
    sed
    。但是,请注意,只有在原始数组中的元素都不包含空格的情况下,这才有效

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

    sed
    命令获取每个数组元素“x”,并将其替换为字符串“[x]=x”,适用于关联数组分配。

    awk的数组是关联数组,如果它可以帮助您,请看一看。您最好使用shell以外的语言来进行这种类型的数据处理。