使用Perl搜索并替换文件中的特定字符串

时间:2011-11-22 09:26:00

标签: perl

  

可能重复:
  How to replace a string in an existing file in Perl?

我需要创建一个在文件中进行搜索和替换的子例程。

这是myfiletemplate.txt的内容:

CATEGORY1=youknow_<PREF>  
CATEGORY2=your/<PREF>/goes/here/

这是我的替换字符串:ABCD

我需要将<PREF>的所有实例替换为ABCD

3 个答案:

答案 0 :(得分:40)

一个班轮:

perl -pi.back -e 's/<PREF>/ABCD/g;' inputfile

答案 1 :(得分:21)

又快又脏:

#!/usr/bin/perl -w

use strict;

open(FILE, "</tmp/yourfile.txt") || die "File not found";
my @lines = <FILE>;
close(FILE);

foreach(@lines) {
   $_ =~ s/<PREF>/ABCD/g;
}

open(FILE, ">/tmp/yourfile.txt") || die "File not found";
print FILE @lines;
close(FILE);

也许我最好不要将结果写回原始文件;而是将其写入副本并首先检查结果。

答案 2 :(得分:16)

你也可以这样做:

#!/usr/bin/perl

use strict;
use warnings;

$^I = '.bak'; # create a backup copy 

while (<>) {
   s/<PREF>/ABCD/g; # do the replacement
   print; # print to the modified file
}

使用

调用脚本
./script.pl input_file

您将获得一个名为input_file的文件,其中包含您的更改,以及一个名为input_file.bak的文件,该文件只是原始文件的副本。