我需要帮助来编写一些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
请为此提出解决方案。
答案 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上得到它。