如何从第二个文件2替换文件1中的fasta序列?

如何从第二个文件2替换文件1中的fasta序列?

我有两个 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命令,但它正在连接所有序列。但是,我需要用 File2 序列替换 File1 序列。

答案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

相关内容