替换perl中的文本

时间:2014-07-16 07:41:03

标签: perl file-io

我试图在文件中找到一个特定的字符串,并希望用另一个字符串替换该字符串。然后我想在文件中替换此字符串。我使用以下代码:

     open(FILEB,"+<File B (2).txt");
     $hostNameA="Any string\n";
    foreach $lineB(FILEB)
     {
         seek(FILEB,-length($lineB),1);
         $lineB=~s/$hostNameB/$hostNameA/;
         print FILEB $lineB;
     }

基本上,我的查询是如何在FileB ....中替换hostNameB和hostNameA。

3 个答案:

答案 0 :(得分:1)

如果您正在使用linux,则无需打开文件,也无需创建备份文件。以下脚本应该有效 -

#!/usr/bin/perl

#Commandline
my $command = "sed -i 's/FOO/BAR/g' /mydir/myfile.txt";

#Execute Command
`$command`;

上面的脚本将替换所有出现的字符串&#39; FOO&#39;与&#39; BAR&#39;在myfile.txt中

答案 1 :(得分:0)

使用相同句柄写入文件将破坏原始文件。

open IN, '<', 'path_to_file' or die $!
open OUT, '>', 'path_to_replaced_file' or die $!;
while (my $line = <IN>) {
    $line =~ s/something/tosomething/g;
    print OUT $line;
}
close OUT;
close IN;
# if you wish, backup old file, and rename new file

答案 2 :(得分:0)

这个怎么样?     $ perl -pi.bak -e 's/hostNameB/hostNameA/g' "File B (2).txt"

从“文件B(2).txt”中读取文件,然后使用regex的/ hostNameB / hostNamea / g'进行编辑 并备份原始文件。