あるファイルの複数の列を別のファイルの1つの列と比較し、2番目のファイルの一致を表示するにはどうすればよいですか?

あるファイルの複数の列を別のファイルの1つの列と比較し、2番目のファイルの一致を表示するにはどうすればよいですか?

次の 2 つのファイルがあります。

ファイル1

apple fruit 10 4
strawberry fruit 22 11
berry fruit 33 33
ball toy 1 12
straw thing 2 33

ファイル2

strawberry straw berry
rawberry raw berry

ファイル2の列1をファイル1の列1と比較し、ファイル2の列2をファイル1の列1と、ファイル2の列3をファイル1の列1と比較したいと思います。一致するものが見つかったら、ファイル1に一致する3行すべてを表示したいと思います。

ここで出力は次のようになります。

strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33

どうすればいいですか?

答え1

$ awk 'NR==FNR{a[$1]=$0} $1 in a && $2 in a && $3 in a{print a[$1] ORS a[$2] ORS a[$3]}' file1 file2
strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33
  • 最初の列に基づいて行を保存し、3つの列行がすべて一致したfile1場合file2、一致する行を印刷します。

関連情報