特定の列の共通フィールドを持つ2つのファイルをマージする方法

特定の列の共通フィールドを持つ2つのファイルをマージする方法

2つのファイルがあり、いくつかの特定の列が同じ場合は、1つの列を除くすべてのフィールドを含む行をエクスポートするようにファイルをマージしたいと思います。これは、特定の列の両方のファイルを減算することです。

たとえば、次の 2 つのファイルがあり、1 列から 3 列まで同じ行を出力しようとしますが、4 列はファイル (ファイル 1 - ファイル 2) の 4 列の 2 つの値を引いたものと同じです。

ファイル1:

10      20      30      50     
100     200     300     850    
150     250     350     900    
.....

ファイル2:

100     200     300      840    
15      25      35       55     
150     250     350      880    
....

出力:

100     200     300      10    
150     250     350      20
....    

ベストアンサー1

awkを使用してください:

$ awk '{k = $1 FS $2 FS $3} NR==FNR {a[k] = $4; next} k in a {print k, a[k]-$4}' File1 File2
100 200 300 10
150 250 350 20

おすすめ記事