我有一个 fasta 文件,其中的序列用换行符分解。我想删除换行符。这是我的文件的示例:
>accession1
ATGGCCCATG
GGATCCTAGC
>accession2
GATATCCATG
AAACGGCTTA
我想把它转换成这个:
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
我在这个网站上找到了一个潜在的解决方案,如下所示:
cat input.fasta | awk '{if (substr($0,1,1)==">"){if (p){print "\n";} print $0} else printf("%s",$0);p++;}END{print "\n"}' > joinedlineoutput.fasta
但是,这会在每个条目之间放置一个额外的换行符,因此文件如下所示:
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
我是个 awk 菜鸟,但我尝试修改命令。我的猜测是if (p){print "\n";}
罪魁祸首......可能print "\n"
是添加两个换行符。我不知道如何只添加一个换行符……这可能很容易,但就像我说的,我是个菜鸟。这是我的(不成功的)解决方案:
awk '{if (substr($0,1,1)==">"){print "\n"$0} else printf("%s",$0);p++;}END{print "\n"}' input.fasta > joinedoutput.fasta
但是,这会在文件的开头添加一个空行,因为它总是在打印第一个入藏号之前打印一个新行:
{empty line}
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
任何人都有解决方案以正确格式获取我的文件?谢谢!