如何合并特定列中具有公共字段的两个文件

如何合并特定列中具有公共字段的两个文件

我有两个文件,当某些特定列相同时,我想以某种方式合并它们,导出包含除一列之外的所有字段的行,这是该特定列中两个文件的减法。

例如,我有如下两个文件,我想输出第 1 列到第 3 列相同的行,并且第 4 列等于文件第 4 列(文件 1 - 文件 2)中两个值的减法。

文件一:

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

相关内容