在Bash中将一个索引数组转换成关联数组

3

目前,我正努力解决以下问题之一:

  1. 如何将普通数组(索引数组,索引从0开始)转换为关联数组,其中值成为键,值本身是值。
  2. 用单个语句从索引数组创建新的关联数组,其中值为键。 我知道可以使用循环完成此操作,但对于包含近500,000个元素的大型数组,循环是一种负担。
  3. 从mysql sql查询结果创建关联数组。 通常,我会从mysql sql查询结果创建索引数组,如下所示:

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

其中$ DB_NAME是指向数据库名称字符串的变量。


awk 的数组是关联数组,如果可能有助于您,请查看。 - BMW
你最好使用除了Shell之外的其他编程语言来进行这种类型的数据处理。 - chepner
1个回答

2

以下是一种使用sed的方法。请注意,仅当原始数组的元素不包含空格时,此方法才有效。

declare -A "newArray=( $(echo ${oldArray[@]} | sed 's/[^ ]*/[&]=&/g') )"
sed 命令将每个数组元素 'x' 替换为字符串 '[x]=x',适用于关联数组赋值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接