我需要创建一个在文件中进行搜索和替换的子例程。
这是myfiletemplate.txt的内容:
CATEGORY1=youknow_<PREF>
CATEGORY2=your/<PREF>/goes/here/
这是我的替换字符串:ABCD
我需要将<PREF>
的所有实例替换为ABCD
答案 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
的文件,该文件只是原始文件的副本。