如何使用Perl更改文本文件中的选定值

时间:2010-06-21 07:08:47

标签: perl

我需要帮助来编写一些Perl代码来替换文本文件中的一些选定值。以下是我的文本文件示例。我想将“end”的值替换为日期格式YYYYMMDD中的新值,将键值增加1,其余值应保持不变。

源文件:

    server=host1
    network=eth0
    start=YYYYMMDD
    end=YYYYMMDD
    key=34

如果我将“结束”值更改为yyyymmdd(新日期),将“key”更改为+1。输出结果应为:

    server=host1
    network=eth0
    start=YYYYMMDD
    end=yyyymmdd
    key=35

请为此提出解决方案。

2 个答案:

答案 0 :(得分:2)

*编辑:看起来我误解了这个问题 新解决方案:

#!/usr/bin/perl
$filename = "a.txt";
$tempfile = "b.txt";
$newdate = "whatever";

open(IS, $filename);
open(OS, ">$tempfile");
while(<IS>)
{
    if($_ =~ /^end=(.*)$/){
        print OS "end=$newdate\n";
    } elsif ($_ =~ /^key=(.*)$/) {
        print OS "key=".($1+1)."\n";
    } else {
        print OS $_;
    }
}
close(IS);
close(OS);
unlink($filename);
rename($tempfile, $filename);

答案 1 :(得分:1)

这个怎么样:

#!/usr/bin/env perl

while (<>) {
    s/^end=/WHATEVER=/gi;
    if (/^key=/) {
        ($key,$val) = split("=");
        $val = $val + 1;
        $_ = "$key=$val";
    }
    print;
}

在unix上,cat你的文本文件| this.pl在stdout上得到它。