2014-07-16 186 views
-1

我想在文件中找到一個特定的字符串,並且想用另一個字符串替換該字符串。然後我想在文件中替換這個字符串。我使用下面的代碼:替換perl中的文本

 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第i個hostNameA ....

回答

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 
+0

什麼是「文件路徑」和「path_to_replaced_file」? – user3839613

+0

「path_to_file」是您的原始文件,其他是替換文件。 – javamonk

0

這個怎麼樣 $ perl -pi.bak -e 's/hostNameB/hostNameA/g' "File B (2).txt"

讀取文件 「文件B(2).TXT」,然後用正則表達式的/ hostNameB/hostNamea/G' 編輯並備份原始文件。

1

如果你在使用linux,不需要打開一個文件,也不需要創建備份文件。下面的腳本應該工作 -

#!/usr/bin/perl 

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

#Execute Command 
`$command`; 

上面的腳本將替換字符串「FOO」與「BAR」中出現的所有的myfile.txt