如何使用perl解释器转义单引号?
如何在bash表达式如何使用perl解释器转义单引号?,perl,bash,Perl,Bash,如何在bash表达式find.中避开单个qoutexargs perl-pi-e的//“冲突”=>,//g'?我想替换我的文件中的字符串“conflicts”=>“”?您不能在单引号内直接转义它,因此要获得单引号,您需要执行以下操作: $ echo 'i'\''m a string with a single quote' i'm a string with a single quote 这将结束引用的部分,转义一个引用,因为它将出现在引用之外,然后再次开始引用。结果仍然是一个参数。在代码周围
find.中避开单个qoutexargs perl-pi-e的//“冲突”=>,//g'
?我想替换我的文件中的字符串“conflicts”=>“”?您不能在单引号内直接转义它,因此要获得单引号,您需要执行以下操作:
$ echo 'i'\''m a string with a single quote'
i'm a string with a single quote
这将结束引用的部分,转义一个引用,因为它将出现在引用之外,然后再次开始引用。结果仍然是一个参数。在代码周围使用双引号:
find . | xargs perl -pi -e "s/'conflicts' => '',//g"
FatalError和gpojd都给出了很好的解决方案。我将用另一个选项来解决这个问题:
find . | xargs perl -pi -e 's/\x27conflicts\x27 => \x27\x27,//g'
这是因为在Perl中,
s/../../
表示法支持反斜杠转义\x27
是一种十六进制转义(“
是U+0027)。我不建议这样做,因为Perl代码中常用的很多字符(最著名的是!
)甚至在双引号内都有特殊的bash含义。我唯一会使用“
而不是”
在Windows上,单引号不起作用。