我有一个fasta文件,用换行符分解序列.我想删除换行符.这是我的文件的一个例子:
>accession1
ATGGCCCATG
GGATCCTAGC
>accession2
GATATCCATG
AAACGGCTTA
Run Code Online (Sandbox Code Playgroud)
我想把它转换成这个:
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
Run Code Online (Sandbox Code Playgroud)
我在这个网站上找到了一个潜在的解决方案,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
但是,这会在每个条目之间放置一个额外的换行符,因此文件如下所示:
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
Run Code Online (Sandbox Code Playgroud)
我是一个awk noob,但我开始修改命令.我的猜测是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
Run Code Online (Sandbox Code Playgroud)
但是,这会在文件开头添加一个空行,因为它在打印第一个入藏号之前始终打印一个新行:
{empty line}
>accession1
ATGGCCCATGGGATCCTAGC
>accession2
GATATCCATGAAACGGCTTA
Run Code Online (Sandbox Code Playgroud)
任何人都有解决方案来获取正确格式的文件?谢谢!