基于每个文件 2 列的 2 个文件的公共行

Wil*_*ill 1 unix sorting awk join overlap

我有两个文件:

文件 1:

1   imm_1_898835    0   908972  0   A
1   vh_1_1108138    0   1118275 T   C
1   vh_1_1110294    0   1120431 A   G
1   rs9729550   0   1135242 C   A
Run Code Online (Sandbox Code Playgroud)

文件2:

1   exm1916089  0   865545  0   0
1   exm44   0   865584  0   G
1   exm46   0   865625  0   G
1   exm47   0   865628  A   G
1   exm51   0   908972  0   G
1   exmF    0   1120431 C   A
Run Code Online (Sandbox Code Playgroud)

我想根据第 1 列和第 4 列获取文件 1 和 2 之间重叠的文件,并且我将打印第 1 列和第 4 列的公共值以及文件 1 和文件 2 的第 2 列。

例如

我想要:

1   908972  imm_1_898835    exm51
1   1120431 vh_1_1110294    exmF
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 5

你能不能试试以下。

awk 'FNR==NR{a[$1,$4]=$2;next} (($1,$4) in a){print $1,$4,a[$1,$4],$2}' file1  file2
Run Code Online (Sandbox Code Playgroud)