Perl实例---批量替换内容
Posted EasyPerl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl实例---批量替换内容相关的知识,希望对你有一定的参考价值。
我们在数据处理的时候, 有时候需要对原始的数据的部分内容进行替换, 有时候又同时有多个替换规则,那么我们需要如何来进行批量的处理呢?
我们还是通过下面的例子来看:
我们有一个原始数据文件data.txt,它的内容如下:
ACGGGCCAGGATTTCAAA
同时我们有一个替换规则的文件rule.txt, 它的内容如下:
A a
T t
G g
C c
我们来看如何处理:
读取文件
my $file = 'data.txt';
open my $fh, '<', $file or die "failed to open file:$file\n";
my $file2 = 'rule.txt';
open my $fh2, '<', $file2 or die "failed to open file:$file2\n";
我们先将所有规则读入hash
my %rules;
while(<$fh2>){
chomp;
my ($origin, $new) = split /\s+/;
next unless defined $new;
$rules{$origin} = $new;
}
close $fh2;
while(<$fh>){
我们以此执行所有的规则, 来进行正则替换
for my $origin(keys %rules){
s/$origin/$rules{$origin}/g;
}
print $_;
}
close $fh;
这里我们需要特别注意的是, 如果我们的规则里面有冲突的规则,或者我们需要按照顺序来执行这些规则, 那么我们就不能单独使用hash了。
我们需要做的变动就是, 同时使用一个数组来存储所有的hash的key, 最后进行直接规则的时候, 按照数组的顺序来执行。
比如, 我们有如下规则时, 就一定要当心了:
a c
c b
以上是关于Perl实例---批量替换内容的主要内容,如果未能解决你的问题,请参考以下文章