我需要将文件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
请问有人可以帮忙吗?
答案 0 :(得分:1)
您接近了,请您试一下。
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,a[$2,$4]
}
' Input_file1 Input_file2
为什么OP的代码不起作用: OP在完成此操作的逻辑上很接近,尽管{{1 }}应该是a[$2 FS $5]=$0
,在第二个Input_fie上打印时,它应该是a[$2 FS $5]=$4
。我在上面的代码中修复了该问题。