2つの異なる列の一致する値に基づいて、スペースで区切られた2つのファイルを結合します。

2つの異なる列の一致する値に基づいて、スペースで区切られた2つのファイルを結合します。

この種の問題についてこのウェブサイトが提供するさまざまなソリューションを試しましたが、どちらも役に立ちませんでした。

2つのファイルがあります(スペースで区切られ、列が含まれています)。両方のファイルには、以下の例に示されているのと同じ数のレコードが含まれています。

この列をA、B、Cと呼びます。 (これは列見出しです。)

ファイル1:

A  B  C  D
-----------
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
a5 b5 c5 d5

ファイル2:

E B  A  F
---------
1 b5 a5 f
2 b2 a2 f
1 a1 b1 f
1 a3 b3 f
2 a4 b4 f 

マージされたファイルを生成したいと思います。

A  B  C  D  E
-------------
a1 b1 c1 d1 1
a2 b2 c2 d2 2
a3 b3 c3 d3 1
a4 b4 c4 d4 2
a5 b5 c5 d5 1

ベストアンサー1

これが必要なものと似ていますか(まだフォーマットする必要がある部分が残っています...)?

awk 'NR == FNR {T[$2,$3] = T[$3,$2] = $1; next} {print $0, T[$1,$2]}' file2 file1
A  B  C  D E
----------- 
a1 b1 c1 d1 1
a2 b2 c2 d2 2
a3 b3 c3 d3 1
a4 b4 c4 d4 2
a5 b5 c5 d5 1

おすすめ記事