Perl在文本文件中查找并替换反斜杠

时间:2012-11-12 07:17:01

标签: perl file edit backslash

我有一个文件,我正在进入MySQL表。遗憾的是,该文件包含双引号(“)和反斜杠()。我已经找到了一种方法,在Perl中,找到并替换双引号(或者我认为),但似乎无法弄清楚如何删除所有愚蠢的反斜杠。

有没有人有任何想法?这是片段的样子......对不起,我是一个我还在学习的菜鸟!

open(FILE,$fileName) || die("Cannot Open File");
my(@fcont) = <FILE>;
close FILE;

my $searchStr1=qq{"};
my $replaceStr1=qq{ };

open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
    $line =~ s/$searchStr1/$replaceStr1/g;
    print FOUT $line;
}

#not sure if searching for backslash will work
my $searchStr2="\\";
my $replaceStr2=qq{ };

open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
    $line =~ s/$searchStr2/$replaceStr2/g;
    print FOUT $line;
}

close FOUT;

3 个答案:

答案 0 :(得分:1)

如果将搜索模式放在双引号变量中,则需要加倍反斜杠:

my $searchStr2="\\\\";

该变量将包含\\,因此正则表达式仍会获得两个反斜杠,第一个反转符合第二个反斜杠,以便它与文字反斜杠匹配。

答案 1 :(得分:1)

将“或\”替换为空白

$line =~ s/"|\\/ /g;

答案 2 :(得分:1)

将一个文字字符串替换为另一个字符串时,使用tr///而不是s///g更有效:

$line =~ tr{"\\}{' };