2つの異なるファイルのフィールドを一致させ、出力ファイルに追加する方法は?

2つの異なるファイルのフィールドを一致させ、出力ファイルに追加する方法は?

ファイル1の$ 1とファイル2の$ 2を使用して2つの異なるファイルを一致させ、ファイル1のファイル2の$ 1を印刷する必要があります。

入力ファイル1

101 2
101 5
101 7
103 2
103 3
103 4
105 3
105 2

入力ファイル2

24 101
23 103
26 105

希望の出力

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

次のコードを試しましたが、間違った出力が表示されます。

awk 'FNR==NR{a[$2]=$0;next};{print a[$2]}' file2 file1

答え1

古典的な職業join

join -1 1 -2 2 file1 file2
  • -1 1最初のファイルのフィールドを指定します。
  • -2 22番目のファイルのフィールドを指定します。

答え2

コードから始めてawkほぼすべてが来たので、ソリューションも公開します。

awk 'FNR==NR { a[$2]=$1; next; } { print $0,a[$1] } ' file2 file1

出力:

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

関連情報