【问题标题】:Convert an indexed array into an associative array in Bash在 Bash 中将索引数组转换为关联数组
【发布时间】:2014-02-11 03:24:59
【问题描述】:

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

  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 是指向数据库名称字符串的变量。

【问题讨论】:

  • awk的数组是关联数组,看看吧,如果对你有帮助。
  • 您最好使用 shell 以外的语言来进行这种类型的数据处理。

标签: bash associative-array


【解决方案1】:

这是一种方法,使用sed。请注意,这只有在原始数组的所有元素都不包含空格时才有效。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多