基于文件的第一和第二列和第二文件的第三和第四列连接2个文件文件、三和

2023-09-03 15:03:02 作者:月照、花影移

文件1

rs12345  G  C  
rs78901  A  T

文件2

3  22745180  rs12345  G  C,G  
12 67182999  rs78901  A  G,T  
numpy和pandas库实战 批量得到文件夹下多个CSV文件中的第一列数据并求其最值 附个阶段视频教程

所需输出

3  22745180  rs12345  G  C  
12 67182999  rs78901  A  T  

我试了 awk 'NR==FNR {h[$1] = $3; next} {print $1,$2,$3,h[$2]}' file1 file2

生成的输出

3  22745180  rs12345  

将文件2的前4列和文件1的第3列打印为输出中的第5列

推荐答案

您可以使用awk

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

3   22745180  rs12345  G  C
12  67182999  rs78901  A  T

可读性更强的版本:

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

仅用于表格输出的column -t