多行搜索替换为Perl
发布时间:2020-12-15 21:26:25 所属栏目:大数据 来源:网络整理
导读:我知道这种问题已经被问过很多次了。我再次来这里的原因是,我觉得我错过了一些简单和根本的东西。 是否有可能使这种搜索替换程序更好。例如没有打开相同的文件两次。欢迎速度相关的建议。 请注意,这适用于多行匹配,也代替多行字符串。 #!/bin/perl -w -07
我知道这种问题已经被问过很多次了。我再次来这里的原因是,我觉得我错过了一些简单和根本的东西。
是否有可能使这种搜索替换程序更好。例如没有打开相同的文件两次。欢迎速度相关的建议。 请注意,这适用于多行匹配,也代替多行字符串。 #!/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 [扩展]开关。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |