用PERL替换PERL中的一行

时间:2014-07-07 09:08:00

标签: string perl replace

我正在迭代一个文件然后有一个我必须搜索的字符串,并且从该字符串我必须用另一个字符串替换子字符串。任何人都可以帮我解决这个问题。 我试过这样的。

while(<FH>)
{
if($_ =~ /AndroidAPIEventLogging=false/i)
{

if($& =~ s/false/True/)
{
print("Changed successfully\n");

}

}

} 

现在它显示它只能执行读取操作。我尝试在每种可能的模式下打开文件。

2 个答案:

答案 0 :(得分:2)

匹配和替换是某种perl反模式,因为你匹配(通常是相同的字符串)两次,所以回到你的问题

while (<FH>) {
  # everything before '\K' is not replaced (positive look behind)
  if (s/AndroidAPIEventLogging=\Kfalse/True/i) { # $_ =~ 

    print("Changed successfully\n");
  }
}

答案 1 :(得分:0)

你可以通过Perl one-liner

使用-i option来做到这一点
perl -i -pe 's/AndroidAPIEventLogging=false/AndroidAPIEventLogging=true/i' file1 file2...

作为替代方式,请查看Tie::File。它似乎是为快速就地文件编辑而设计的。