我必须在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中的各种其他函数,因此不在我的控制范围内。
答案 0 :(得分:4)
使用其他替换分隔符,即s|
vs s/
perl -p -i -e "s|K6D2wlawNtxOMrTOiEwnz12Y1qvn|TO_DATE('03/31/2013 02:00:00', 'MM/DD/YYYY HH24:MI:SS')|" file
答案 1 :(得分:3)
如果要将其视为普通字符串,则应在其上调用 quotemeta 以转义任何特殊字符,或使用等效序列,即
perl -p -i -e "s/\Q$search\E/\Q$replace\E/g" file