さまざまな意味のあるリストを変換してみてください

さまざまな意味のあるリストを変換してみてください

変換リストを使用してあるリストを別のリストに変換しようとしていますが、変換リストにはいくつかの意味があり、それを処理する方法がわかりません。たとえば、数字のみを含む次のリストがあります。

1 4  
2 5  
3 6  
5 1

変換(1 - > appleなど)を含む2番目のリストがあります。

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

2番目の変換リストを使用して数値リストをフルーツリストに変更したいと思います。これが私が望む結果です:

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

「2」にはブルーベリーとバナナの両方が含まれているため、元の行の代わりに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

仕組みは次のとおりです。まずfruit.txt、変換()を含むファイルを配列に読み込みますdata。次に、2つの数字列()を含むファイルを読み取り、list.txtこの数字を使用して配列内の果物を見つけますdata。各項目には複数の果物の種類を含めることができるため、すべての項目を繰り返します。

おすすめ記事