提取两文件相同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
1、现在想根据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中,则打印。
2、如果不想提取相同ID的行,则可以使用如下命令:
awk 'NR==FNR{a[$2];next} !($5 in a)' file1 file2 > file3
c 0.21245 0.22964 0.81843 rs3
本文来自博客园,作者:橙子牛奶糖(陈文燕),转载请注明原文链接:https://www.cnblogs.com/chenwenyan/p/13328122.html