2つのファイル間に一致するすべての行(重複を含む)を印刷する方法
ソースファイル:
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
コマンドはこれら2つのファイルを一緒にリンクします。
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