
ファイル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 2
2番目のファイルのフィールドを指定します。
答え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