gpt4 book ai didi

linux - 如何在 Perl 中解析成对数据时转义额外的空行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:57 28 4
gpt4 key购买 nike

我有一个看起来像这样的输入文件:

>Seq_1;1
AAAAAAAAAAAAAAAAAAAAA
>Seq_2;1
CCCCCCCCCCCCCCCCCCCCC

还有很多这样的成对线。我想要做的就是像这样简单地打印出来:

>Seq_1;1 AAAAAAAAAAAAAAAAAAAAA
>Seq_2;1 CCCCCCCCCCCCCCCCCCCCC

但是为什么这段代码会失败:

#!/usr/bin/perl -w

while ( <> ) {
chomp;
my $line = $_;
my $rdn = "";
my $sq = "";

if ( $line =~ /^>/ ) {
$rdn = $line;
}
elsif ($line =~ /^[ATCG]/) {
$sq = $line;
}

print "$rdn $sq\n";

}

它改为打印:

>Seq_1;1
AAAAAAAAAAAAAAAAAAAAA
>Seq_2;1
CCCCCCCCCCCCCCCCCCCCC

最佳答案

既然你的数据是“成对的”,除非你想明确检查每一行你所描述的模式,为什么不一次只读两行呢?然后做你的处理:

#!/usr/bin/perl

use strict;
use warnings;


while (my $line1 = <>) {
my $line2 = <>;

chomp $line1;
chomp $line2;

# ...do_something...

print "$line1 $line2\n";
}

结果:

>Seq_1;1 AAAAAAAAAAAAAAAAAAAAA
>Seq_2;1 CCCCCCCCCCCCCCCCCCCCC

关于linux - 如何在 Perl 中解析成对数据时转义额外的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16893824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com