Bash将2个文件转换为关联数组

时间:2014-03-07 19:04:14

标签: bash

使用Bash 3.2,如何将两组文件读入一个数组,其中第一个数组是值的键(由第二组数组指定)。每个文件都相互关联。因此文件1中的0是文件2中0的键。

文件1:

fruit
veggies
meat

文件2:

apples
carrots
pork

我如何读取这两个文件并使数组看起来像这样:

$ARRAY[fruit] = apples
$ARRAY[veggies] = carrots
$ARRAY[pork] = meat

编辑:预期用途(因为Bash 3.2没有关联数组)

我有一个带有ID的文件和一个带有访问令牌的文件。我打算建立一个看起来像这样的数组:

$ARRAY[id] = that id's token

然后循环遍历数组,并点击一个网址,如下所示:

curl https://a.service/$ID?token=$TOKEN

我搜了一会儿,找不到任何明确的例子。提前谢谢。

2 个答案:

答案 0 :(得分:4)

不幸的是版本4之前的bash中没有关联数组。你可以使用awk:

paste f1 f2|awk '{a[$1]=$2} END {for (i in a) print i "=" a[i]}'
meat=pork
fruit=apples
veggies=carrots

编辑:根据您编辑过的问题,您只需执行paste并处理生成的文件/数据:

paste f1 f2
meat pork
fruit apples
veggies carrots

答案 1 :(得分:2)

根据@ anubhava的paste方法将所有内容整合在一起:

 paste file1 file2 | 
   while read ID TOKEN; do curl "https://a.service/$ID?token=$TOKEN"; done