2012-11-12 47 views
-1

我有我進入一個MySQL表的文件。該文件,可悲的是,包含雙引號(「)和反斜線()。我已經想出了一個辦法,在Perl中,查找和替換雙引號(或因此我認爲),但似乎無法弄清楚如何刪除所有無聊的反斜線。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

當更換反斜線,你必須要考慮雙引號問題,把匹配模式直接放到's ///'運算符中去除這種可能性。 – amon

回答

1

如果你把搜索模式在雙引號變量中,需要在反斜槓上加倍:

my $searchStr2="\\\\"; 

變量然後將包含\\,所以正則表達式仍然得到兩個反斜槓,第一個逃離第二個,這樣它將匹配一個反斜槓。

1

更換「或\空白

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

當另一個替換一個文本字符串,它是更有效地使用tr///而不是s///g

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