如何打印两个文件之间的所有匹配行(包括重复项)
源文件:
SNP value
RS1 0.55
RS2 0.52
RS3 0.25
RS4 0.22
查询文件:
SNP
RS1
RS2
RS2
RS3
RS4
RS4
期望的输出:
SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22
目前我正在使用以下命令来检索匹配的行,但正在删除重复项,而我需要打印包括重复项在内的所有行,
有什么建议请
谢谢
awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$0;next}a[$1]{print}' queryfile sourcefile > output
答案1
该join
命令将为您将这两个文件连接在一起
join sourcefile queryfile
输出(来自示例文件)
SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22
答案2
本质上只是以相反的顺序处理文件的问题
$ awk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$1]=$0;next} a[$1]{print a[$1]}' sourcefile queryfile
SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22