我有一个文件,我正在进入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;
答案 0 :(得分:1)
如果将搜索模式放在双引号变量中,则需要加倍反斜杠:
my $searchStr2="\\\\";
该变量将包含\\
,因此正则表达式仍会获得两个反斜杠,第一个反转符合第二个反斜杠,以便它与文字反斜杠匹配。
答案 1 :(得分:1)
将“或\”替换为空白
$line =~ s/"|\\/ /g;
答案 2 :(得分:1)
将一个文字字符串替换为另一个字符串时,使用tr///
而不是s///g
更有效:
$line =~ tr{"\\}{' };