根据文件的第 1 和第 2 列以及第二个文件的第 3 和第 4 列加入 2 个文件

join 2 files based on 1st & 2nd column of file AND 3rd & 4th column of second file

文件 1

rs12345  G  C  
rs78901  A  T

文件 2

3  22745180  rs12345  G  C,G  
12 67182999  rs78901  A  G,T  

期望的输出

3  22745180  rs12345  G  C  
12 67182999  rs78901  A  T  

我试过了 awk 'NR==FNR {h[] = ; next} {print ,,,h[]}' file1 file2

已生成输出

3  22745180  rs12345  

打印 file2 的前 4 列和 file1 的第 3 列作为输出中的第 5 列

您可以使用这个 awk:

awk 'FNR == NR {map[,] = ; next} (,) in map {$NF = map[,]} 1' f1 f2 | column -t

3   22745180  rs12345  G  C
12  67182999  rs78901  A  T

更具可读性的版本:

awk '
FNR == NR {
   map[,] = 
   next
}
(,) in map {
   $NF = map[,]
}
1' file1 file2 | column -t

仅将 column -t 用于表格输出。

在您提供的情况下(两个文件中的行都匹配)这将起作用

paste file1 file2 | awk '{print ,,,,}'