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

发布于 2024-12-17 18:14:10 字数 465 浏览 1 评论 0原文

可能的重复:
如何替换现有文件中的字符串Perl?

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

这是 myfiletemplate.txt 的内容:

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

这是我的替换字符串: ABCD

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

Possible Duplicate:
How to replace a string in an existing file in Perl?

I need to create a subroutine that does a search and replace in file.

Here's the contents of myfiletemplate.txt:

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

Here's my replacement string: ABCD

I need to replace all instances of <PREF> to ABCD

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

海拔太高太耀眼 2024-12-24 18:14:10

一班轮:

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

A one liner:

perl -pi.back -e 's/<PREF>/ABCD/g;' inputfile
天暗了我发光 2024-12-24 18:14:10

快速而肮脏:

#!/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);

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

Quick and dirty:

#!/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);

Perhaps it i a good idea not to write the result back to your original file; instead write it to a copy and check the result first.

疑心病 2024-12-24 18:14:10

您也可以这样做:

#!/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
}

使用 by 调用脚本

./script.pl input_file

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

You could also do this:

#!/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
}

Invoke the script with by

./script.pl input_file

You will get a file named input_file, containing your changes, and a file named input_file.bak, which is simply a copy of the original file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文