如何使用perl解释器转义单引号?

如何使用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 这将结束引用的部分,转义一个引用,因为它将出现在引用之外,然后再次开始引用。结果仍然是一个参数。在代码周围

如何在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 . | 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上,单引号不起作用。