开发者

How to change selected values in text file using Perl

I need help to write some Perl code to replace some selected values in text files. Below is the sample of my text files. I want to replace the value of "end" to a new value in the date format YYYYMMDD, increase the key value by 1, and the rest should remain the same.

Source File:

    server=host1
    network=eth0
    start=YYYYMMDD
 开发者_如何学Python   end=YYYYMMDD
    key=34

If I change the "end" value to yyyymmdd (new date) and "key" to +1. the output result should be:

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

Please suggest a solution for this.


*edit: looks like I misread the question new solution:

#!/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);


How about this:

#!/usr/bin/env perl

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

On unix, cat your text file | this.pl to get it on stdout.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜