2

我必须在 perl 中使用替换方法。但问题是要替换的字符串相当复杂,并且包含特殊字符。

要搜索的字符串:

K6D2wlawNtxOMrTOiEwnz12Y1qvn

要替换的字符串:

TO_DATE('03/31/2013 02:00:00', 'MM/DD/YYYY HH24:MI:SS')

虽然要搜索的字符串相当简单,但要替换的字符串相当复杂,正常替换不起作用:

perl -p -i -e "s/$search/$replace/g" file

perl 中是否有任何其他引用方法可以覆盖这些正则表达式规则并简单地替换上述复杂字符串?

我必须强调,我不能编辑要替换的字符串,因为它来自其他来源,可以是 SQL 中的各种其他函数,因此不在我的控制范围内。

4

2 回答 2

4

使用另一个替换分隔符,即s|vss/

perl -p -i -e "s|K6D2wlawNtxOMrTOiEwnz12Y1qvn|TO_DATE('03/31/2013 02:00:00', 'MM/DD/YYYY HH24:MI:SS')|" file
于 2013-06-04T10:17:11.363 回答
3

如果要将其视为普通字符串,则应在其上调用quotemeta以转义任何特殊字符,或使用等效序列,即

perl -p -i -e "s/\Q$search\E/\Q$replace\E/g" file
于 2013-06-04T14:50:13.183 回答