我正在尝试使用转换列表将一个列表转换为另一个列表,但转换列表有多种含义,我不确定如何处理这个问题。例如,我有这个仅包含数字的列表:
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
。由于每个条目可能包含不止一种类型的水果,因此请迭代所有条目。