perl批量替换字符

来源:互联网 发布:举报淘宝客 编辑:程序博客网 时间:2024/04/29 09:03

替换文件中的字符

将以下文件中的RF*****,

>RF00001;5S_rRNA;DQ397844.1/16860-16979   414005:Cenarchaeum symbiosum B

CAAGCCGGCCAUAGCGUCAGGGUGCGACCCAAUCCCAUUCCGAACUUGGA

AGUCAAACCUGAUGUCGCUGUUGUGUUACUAAGAUGCGAGAGCUCUUGGG

AAGCAACAGUGCUGGCAUCA

>RF00001;5S_rRNA;BA000002.3/627792-627911   272557:Aeropyrum pernix K1

GGCCCGGCCAUAGCGGCCGGGUAACACCCGGACUCAUUUCGAACCCGGAA

GUUAAGCCGGCCGCGUUGGAGGCUCCAGUGGGGUCCGAGAGGCCCUGCAG

GGGCCUCCAAGCCGGGGCCG

>RF00001;5S_rRNA;CP001140.1/1163076-1163193   490899:Desulfurococcus kamchatkensis 1221n

GACCCGGCCAUAGUGGCCGGGCAACACCCGGUCUCAUAUCGAACCCGGAA

GUUAAGCCGGCCACGUCAGAGCGGCAGUGAGGUCCGAGAGGCCUCGCAGC

CGCUCUGAGCUGGGAUCG

替换为

RF00001 RF00001;rRNA

RF00002 RF00002;rRNA

RF00177 RF00177;rRNA

RF01118 RF01118;rRNA

RF00003 RF00003;snRNA

RF00004 RF00004;snRNA

RF00007 RF00007;snRNA

RF00012 RF00012;snRNA

RF00015 RF00015;snRNA

RF00016 RF00016;snRNA

RF00020 RF00020;snRNA

RF00026 RF00026;snRNA

RF00045 RF00045;snRNA

RF00046 RF00046;snRNA

RF00049 RF00049;snRNA

 

代码如下

open(Fh,"1.list");

@a = <Fh>;

open(In1,"type.list");

@b = <In1>;

open(OU,">out.out");

 

foreach (@b){

my @lines = split m//s+/ ,$_;

my $id = $lines[0];

my $new_id = $lines[1];

my $flag=0;

foreach (@a){

$line = $_;

if ($line=~/^>/) 

{

if($line =~ /$id/){

$line =~ s/$id/$new_id/;

#print $lines,"/n";

$flag=1;

print OU $line;

}

else

{

$flag=0;

}

}

elsif (($line!~/^>/) && ($flag eq 1))

{

print OU $line;

}

}

}