我一直在查看另一个查找并替换Perl上的问题,而且我不确定如何在一行中实现这种变化。唯一的区别是我想要替换两个东西,一个是原始的,一个是替换原始字符串的修改。我在pm模块中的代码是:
my $num_args = $#ARGV + 1;
if ($num_args != 2) {
print "\nUsage: pscript.pm path to file [VERSION]\n";
exit;
}
my $version = $ARGV[1];
my $revision = $ARGV[1];
$revision =~ s/.*\.//g;
open ($inHandle, "<", $ARGV[0]) or die $^E;
open ($outHandle, ">", "$ARGV[0].mod") or die $^E;
while(my $line = <$inHandle>)
{
$line =~ s/\<Foo\>(.*)\<\/Foo\>/\<Foo\>$version\<\/Foo\>/;
$line =~ s/\<Bar\>(.*)\<\/Bar\>/\<Bar\>$revision\<\/Bar\>/;
print $outHandle $line;
}
close $inHandle;
close $outHandle;
unlink $ARGV[0];
rename "$ARGV[0].mod", $ARGV[0];
不同的是:
$revision =~ s/.*\.//g;
将版本X.X.X.1000变为1000,然后将其用于查找和替换。
可以使用
完成perl -i.bak -p -e 's/old/new/g;' *.config
格式?
答案 0 :(得分:0)
试试这个:
perl -i.bak -pe 's/\d+\.\d+\.\d+\.1000\b/1000/g' *.config