gpt4 book ai didi

perl - 多行搜索替换为 Perl

转载 作者:行者123 更新时间:2023-12-03 23:53:52 24 4
gpt4 key购买 nike

我知道这种问题以前已经被问过很多次了。我再次来到这里的原因是我觉得我错过了一些简单而基本的东西。

是否有可能使这种搜索替换例程更好。例如,无需两次打开同一个文件。也欢迎速度相关的建议。

请注意,这适用于多行匹配并替换多行字符串。

#!/bin/perl -w -0777

local $/ = undef;

open INFILE, $full_file_path or die "Could not open file. $!";
$string = <INFILE>;
close INFILE;

$string =~ s/START.*STOP/$replace_string/sm;

open OUTFILE, ">", $full_file_path or die "Could not open file. $!";
print OUTFILE ($string);
close OUTFILE;

最佳答案

这种搜索和替换可以使用单行代码来完成,例如 -

perl -i -pe 's/START.*STOP/replace_string/g' file_to_change

有关完成同一件事的更多方法,请查看此 thread .要处理多行搜索,请使用以下命令 -
perl -i -pe 'BEGIN{undef $/;} s/START.*STOP/replace_string/smg' file_to_change

要将以下代码从单行代码转换为 perl 程序,请查看 perlrun documentation .

如果你真的发现需要将它转换成一个工作程序,那么就让 Perl 为你处理文件的打开/关闭。
#!/usr/bin/perl -pi
#multi-line in place substitute - subs.pl
use strict;
use warnings;

BEGIN {undef $/;}

s/START.*STOP/replace_string/smg;

然后,您可以使用文件名作为第一个参数调用脚本
$perl subs.pl file_to_change

如果您想要一个更详细的脚本来处理文件打开/关闭操作(我们不是喜欢所有那些“死”语句),然后查看 perlrun 中 -i[extension] 开关下的示例。

关于perl - 多行搜索替换为 Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1030787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com