2番目のファイル2からファイル1のfastaシーケンスを置き換える方法は?

2番目のファイル2からファイル1のfastaシーケンスを置き換える方法は?

以下のように2つのfastaファイルがあります。

ファイル1:

>Contig_1:90600-91187
AAGGCCATCAAGGACGTGGATGAGGTCGTCAAGGGCAAGGAACAGGAATTGATGACGGTC

>Contig_98:35323-35886
GACGAAGCGCTCGCCAAGGCCGAAGAAGAAGGCCTGGATCTGGTCGAAATCCAGCCGCAG

>Contig_24:26615-28387
GCTGCGGCGCTGATCCTGGCGGCCCGCGCCGAGGAGATCGCCCGTTTGGAGCGCGGCGAA

ファイル2:

>Contig_1:90600-91187
GACCGTCATCAATTCCTGTTCCTTGCCCTTGACGACCTCATCCACGTCCTTGATGGCCTT

>Contig_24:26615-28387
TTCGCCGCGCTCCAAACGGGCGATCTCCTCGGCGCGGGCCGCCAGGATCAGCGCCG

両方のファイルの fasta ヘッダーは同じですが、順序が異なります。以下のようにFile1のFile2シーケンスを置き換える必要があります。

予想される結果:

>Contig_1:90600-91187
GACCGTCATCAATTCCTGTTCCTTGCCCTTGACGACCTCATCCACGTCCTTGATGGCCTT

>Contig_98:35323-35886
GACGAAGCGCTCGCCAAGGCCGAAGAAGAAGGCCTGGATCTGGTCGAAATCCAGCCGCAG

>Contig_24:26615-28387
TTCGCCGCGCTCCAAACGGGCGATCTCCTCGGCGCGGGCCGCCAGGATCAGCGCCG

コマンドを試しましたが、catすべてのシーケンスが接続されています。ただし、File1 シーケンスを File2 シーケンスに置き換える必要があります。

ベストアンサー1

そしてawk

awk 'NR == FNR   { if(hdr){ hold[hdr]=$0; hdr="" }; if(/^>/) hdr=$0; next }
     ($0 in hold){ print $0 ORS hold[$0]; getline; next }
                 { print }' file2 file1

おすすめ記事