awkを使用してあるファイルから別のファイルに値を複数回インポートする方法は?

awkを使用してあるファイルから別のファイルに値を複数回インポートする方法は?

ファイル1:

01 999 234 432 666 
02 888 453 234 763
03 145 334 235 456
04 234 784 482 785
05 868 453 546 787

ファイル2:

01
01
02
03
03
05

これは、2つのファイルの最初の列を一致させ、次のような期待される出力を取得したいからです。

予想出力:

999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

次のコードを試しました。

awk 'NR==FNR{a[$1]=$1; next} {if($1 in a) {print $2" "$3" "$4" "$5}}' file2 file1

しかし、私が得ることはこれです:

999 234 432 666
888 453 234 763
145 334 235 456
868 453 546 787

それでは、awkを使用して予想される出力をどのように取得しますか?

ベストアンサー1

最初のファイルからルックアップテーブルを作成し、2番目のファイルからインデックスを作成する必要があります。

$ awk 'NR==FNR {a[$1] = $2 FS $3 FS $4 FS $5; next} {print a[$1]}' file1 file2
999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

または、

join -o1.2,1.3,1.4,1.5 file1 file2

おすすめ記事