尝试转换具有多种含义的列表

尝试转换具有多种含义的列表

我正在尝试使用转换列表将一个列表转换为另一个列表,但转换列表有多种含义,我不确定如何处理这个问题。例如,我有这个仅包含数字的列表:

1 4  
2 5  
3 6  
5 1

我有第二个包含转换的列表(1 --> 苹果等):

1 apple  
2 blueberry  
2 banana  
3 orange  
4 pear  
5 cherry  
6 kiwi  
6 mango

使用第二个转换列表,我想将数字列表更改为水果列表。这是我想要的输出:

apple pear  
blueberry cherry  
banana cherry  
orange kiwi  
orange mango  
cherry apple

由于“2”既有蓝莓又有香蕉,所以我会看到两行而不是原来的一行。 bash 可以进行这种转换吗?

答案1

#!/bin/bash

while read index fruit
do
    data[$index]="${data[index]} $fruit"
done < fruit.txt

while read one two
do
    for fruit1 in ${data[$one]}
    do
        for fruit2 in ${data[$two]}
        do
            echo $fruit1 $fruit2
        done
    done
done < list.txt

其工作原理如下:首先,将包含 conversions ( fruit.txt) 的文件读入数组data。接下来,读取包含两列数字 () 的文件list.txt,并使用这些数字在数组中查找水果data。由于每个条目可能包含不止一种类型的水果,因此请迭代所有条目。

相关内容