我有一个 fasta 文件,其中序列用换行符分隔。我想删除换行符。这是我的文件的示例:
>accession1
ATGGCCCATG
GGATCCTAGC
>accession2
GATATCCATG
AAACGGCTTA
我想把它转换成这样:
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
我找到了一个潜在的解决方案在这个网站上 http://seqanswers.com/forums/showthread.php?t=27567,看起来像这样:
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
有人有办法让我的文件格式正确吗?谢谢!