如何使用Perl更新文件中的行?

时间:2017-05-24 16:48:37

标签: perl

我需要更新文件中的特定行。

我使用正则表达式。最后,我跑过下一行。 文件dog2cat包含:

This example
The dog is drinking.
It is drinking milk.

我的代码:

open(FILE,"+<dog2cat");
while(<FILE>)
{
  my $line=$_;
  if($line =~ /dog/)
  {
    $line =~ s/dog/cat/;
    print FILE $line; 
  }
}
close FILE;

最后文件包含

This example
The dog is drinking.
The cat is drinking.

我想要

This example
The cat is drinking.
It is drinking milk.

2 个答案:

答案 0 :(得分:2)

对于简单的文件更新任务,您可以使用Perl&#34; one-liner&#34;:

perl -i -pe 's/dog/cat/g' dogcat.txt

-i表示要更新您正在处理的文件(如果要写入新文件,可以为其添加扩展名。例如,-i.bak将写入名为dogcat.txt.bak)的文件。

-p说明遍历每一行,并将其打印出来(使用-i,打印回文件)。

-e执行文件中每行的引号之间的任何内容。

答案 1 :(得分:1)

打开第二个文件进行输出,打印到该文件。或者打印到屏幕而不是其他文件,当您运行脚本时,将输出管道传输到文件中。