我想比较两个文件的第二列。如果匹配,则将第二个文件中第三列的对应值打印到第一个文件中。如果没有找到匹配项,填写“NA”
File 1
1 rs1 AA 10
1 rs2 DD 20
1 rs3 EE 30
1 rs4 RR 40
File 2
1 rs1 Pascal
1 rs4 Albinoni
Desired output
1 rs1 AA 10 Pascal
1 rs2 DD 20 NA
1 rs3 EE 30 NA
1 rs4 RR 40 Albinoni
我用过这段代码,但它只输出匹配项:
awk 'NR==FNR { a[$1]=$2; next} $1 in a {print $0, a[$1]}' File2 File1
谢谢
最佳答案
awk 'FNR==NR{a[$2]=$3;next}{print $0,a[$2]?a[$2]:"NA"}' file2 file1
测试如下:
> cat temp1
1 rs1 AA 10
1 rs2 DD 20
1 rs3 EE 30
1 rs4 RR 40
> cat temp2
1 rs1 Pascal
1 rs4 Albinoni
> awk 'FNR==NR{a[$2]=$3;next}{print $0,a[$2]?a[$2]:"NA"}' temp2 temp1
1 rs1 AA 10 Pascal
1 rs2 DD 20 NA
1 rs3 EE 30 NA
1 rs4 RR 40 Albinoni
>
关于unix - awk 比较两个文件中的列,估算另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592736/