请用Perl语言写一个脚本实现按行分片(某些行具有统一的标识符)并实现一定目的

我有一个.fasta文件类似这样一行带“>”标记名字的标题行和下面不定长度的DNA序列行,DNA序列行按照每行n个碱基分成了m行,然后又是一行标题行,再序列m行,要实现将... 我有一个.fasta文件类似这样一行带“>”标记名字的标题行和下面不定长度的DNA序列行,DNA序列行按照每行n个碱基分成了m行,然后又是一行标题行,再序列m行,要实现将标题行下面的m行DNA序列变成一行,该怎么写Perl脚本?求大神解答,fasta文件类似这样,但不是每行只有这么多个

>scaffold1
ACGTAGCTAGCTAGCT
CGTCGATCTAGCTAGC
>scaffold2
TCGATGCTAGCTAGTC
TCGATCGATGCTAGCT
TCGATCGATCTCGATC
GGATGCT
>scaffold3
TGATAGTCGATCGTAG
TCGATCGATGCTATGC
TCGATCGATG
希望转换格式后成:
>scaffold1
ACGTAGCTAGCTAGCTCGTCGATCTAGCTAGC
>scaffold2
TCGATGCTAGCTAGTCTCGATCGATGCTAGCTTCGATCGATCTCGATCGGATGCT
>scaffold3
TGATAGTCGATCGTAGTCGATCGATGCTATGCTCGATCGATG
展开
 我来答
jianxia2k
推荐于2016-04-11 · TA获得超过399个赞
知道小有建树答主
回答量:365
采纳率:82%
帮助的人:194万
展开全部
#!/usr/bin/perl
use strict;

open FILE,"<input.fasta";
foreach my $line (<FILE>) {
    chop($line) while ($line =~ /[\r\n]/);  #去除末尾换行符
    if ($line =~ /^>/) {  # 如果是标题行
        print "\n$line\n";
    }
    else {
        print $line;
    }
}
print "\n";
close FILE;
追问
有一个小小的问题啊,他会在第一个标题行前面加一个空白行,可以去掉吧?
追答
加一个flag吧,最开始为0,在循环里面,如果是标题行的判断里,判断flag==0则置flag=1,并打印"$line\n",否则打印"\n$line\n"。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式