提取两文件相同ID的行

file1的文件如下所示:

a rs1
b rs2
c rs4

file2的文件如下所示:

a 0.170721 -1.82031 0.0690841 rs1
b 0.0803412 -1.01669 0.309605 rs2
c 0.21245 0.22964 0.81843 rs3
d 0.0707158 -0.499683 0.617435 rs4

现在想根据file1的第二列和file2的第五列相同的rs提取数据,生成的file3如下所示:

a 0.170721 -1.82031 0.0690841 rs1
b 0.0803412 -1.01669 0.309605 rs2
d 0.0707158 -0.499683 0.617435 rs4

则用如下命令:
awk 'NR==FNR{a[$2];next}$5 in a' file1 file2 > file3

a[$2]以第一个文件的第二列为下标,建立数组a;
next跳过第一个文件到第二个文件;
$5 in a如果第二个文件第五列的ID在数值a中,则打印。

原文地址:https://www.cnblogs.com/chenwenyan/p/13328122.html