如果你们中的任何一个人可以修改代码,以便在文件 2 中搜索文件 1 中的序列名称,并且如果存在匹配,则将文件 1 中的行及其下一行复制到一个输出文件中。现在代码只复制匹配的标题,而不是它的下一行,即输出文件的序列。谢谢
例如:
文件 1:
序列 1 名称
序列 2 名称
序列 3 名称
文件 2:
序列 1 名称
AGTCAGTCAGTCAGTCAGTC
序列 2 名称
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
序列 3 名称
GGGGTTTTTTTTTTTAAAAAC
序列 4 名称
AAGTCCCCCCCCCCAAGGTT
等等
文件:
序列 1 名称
AGTCAGTCAGTCAGTCAGTC
序列 2 名称
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
序列 3 名称
GGGGTTTTTTTTTTTAAAAAC
code:
use strict;
use warnings;
my $f1 = 'FILE1.fasta';
open FILE1, "$f1" or die "Could not open file \n";
my $f2= 'FILE2.fasta';
open FILE2, "$f2" or die "Could not open file \n";
my $outfile = $ARGV[1];
my @outlines;
my $n=0;
foreach (<FILE1>) {
my $y = 0;
my $outer_text = $_ ;
seek(FILE2,0,0);
foreach (<FILE2>) {
my $inner_text = $_;
if($outer_text eq $inner_text) {
print "$outer_text\n";
push(@outlines, $outer_text);
$n++;
}
}
}
open (OUTFILE, "sequences.fasta") or die "Cannot open $outfile \ +n";
print OUTFILE @outlines;
close OUTFILE;