我试图在文件中找到一个特定的字符串,并希望用另一个字符串替换该字符串。然后我想在文件中替换此字符串。我使用以下代码:
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。
答案 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'进行编辑 并备份原始文件。