perl批量替换字符

替换文件中的字符

将以下文件中的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;

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值