如何在Perl中编辑文件文本

时间:2016-05-03 12:45:37

标签: perl

我现在有一个文件,我想更新变量的值。我们可以做到这一点。 文件内容:

0

现在,我希望更改<Config> NUM1 = 8 AMV1 = 8 AMV2 = 8 DEF2 = 8 DGF = 8 </Config> 的值,我们如何在Perl中执行此操作。

1 个答案:

答案 0 :(得分:3)

您可以使用one-liner直接从命令行执行此操作:

perl -i~ -pe 's/^(\s*NUM1 )=.*/$1=NewValue/' config-file
  • -i~更改文件&#34;就位&#34;,留下附加了波浪号的备份
  • -p逐行读取输入并打印
  • s///是替换
  • ()在正则表达式中创建一个捕获组,第一个捕获组可以从替换部分引用为$1

在脚本中,您需要将replace -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 $!;