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.
精彩评论