我现在有一个文件,我想更新variable.value的值。档案内容:
<Config>
NUM1 = 8
AMV1 = 8
AMV2 = 8
DEF2 = 8
DGF = 8
</Config>
现在,我要更改NUM1
Perl中如何执行此操作的值。
您可以使用单行代码直接在命令行中执行此操作:
perl -i~ -pe 's/^(\s*NUM1 )=.*/$1=NewValue/' config-file
-i~
更改文件“就地”,保留带有波浪号的备份-p
逐行读取输入并打印s///
是替代()
在正则表达式中创建捕获组,第一个捕获组可以从替换零件中引用为 $1
在脚本中,您需要添加替换-p
为实际代码:
#!/usr/bin/perl
use warnings;
use strict;
while (<>) {
s/^(\s*NUM1 )=.*/$1=NewValue/;
print;
}
另存为update-config
,运行为update-config config-file > new-config
。
或者,如果您想自己处理文件的打开,也可以:
#!/usr/bin/perl
use warnings;
use strict;
my $filename = 'config-file';
my $newfile = "$filename.new";
my $backup = "$filename~";
open my $IN, '<', $filename or die $!;
open my $OUT, '>', $newfile or die $!;
while (<$IN>) {
s/^(\s*NUM1 )=.*/$1=NewValue/;
print {$OUT} $_;
}
close $OUT or die $!;
rename $filename, $backup or die $!;
rename $newfile, $filename or die $!;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句