将一个文件中的两列与另一个文件中的两列匹配,然后从第一个文件返回另一列

我需要将文件1中的第2列和第5列与第二个文件中的第2列和第4列进行匹配。如果匹配,则在文件2中返回一个新列,其中包含文件1第四列中的值。

文件_1

64.29K

文件_2

12.5 MB

File_2包含更多列

我尝试了下面的代码,但它返回了整个文件

10  43572716    43572935    22  AMP
10  43572716    43572935    26  DEL
18  48578898    48579056    71  DEL

预期结果是

10  43572716    43572935    DEL 1   RET -0,5    0,51    218,164 0,58    255,89  0,73    0,79    0,85
18  48578898    48579056    DEL 1   SMAD4   -0,9    0,23    8,70886 0,02    16,665  0,05    0,4 0,52

请问有人可以帮忙吗?

lxy1195 回答:将一个文件中的两列与另一个文件中的两列匹配,然后从第一个文件返回另一列

您接近了,请您试一下。

awk 'FNR==NR{a[$2,$5]=$4;next} ($2,$4) in a{print $0,a[$2,$4]}' Input_file1 Input_file2

添加非单一衬里形式的解决方案,如下所示:

awk '
FNR==NR{
  a[$2,$5]=$4
  next
}
($2,$4) in a{
  print $0,$4]
}
' Input_file1  Input_file2


为什么OP的代码不起作用: OP在完成此操作的逻辑上很接近,尽管{{1 }}应该是a[$2 FS $5]=$0,在第二个Input_fie上打印时,它应该是a[$2 FS $5]=$4。我在上面的代码中修复了该问题。

本文链接:https://www.f2er.com/3144251.html

大家都在问