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

Gig*_*egs 8 bash perl

如何在我的bash表达式中逃避单个qoutes find . | xargs perl -pi -e 's/'conflicts' => '',//g'?我想在我的文件中替换字符串'conflicts'=>''?

rua*_*akh 14

FatalError和gpojd都给出了很好的解决方案.我将用另外一个选项来解决这个问题:

find . | xargs perl -pi -e 's/\x27conflicts\x27 => \x27\x27,//g'
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为在Perl中,s/.../.../符号支持反斜杠转义.\x27是十六进制转义('U + 0027).


Fat*_*ror 10

你不能在单引号内直接转义它,所以要获得单引号,你需要做类似的事情:

$ echo 'i'\''m a string with a single quote'
i'm a string with a single quote
Run Code Online (Sandbox Code Playgroud)

这结束了引用的部分,因为它出现在引号之外的单引号,然后再次开始引用.结果仍然是一个论点.


gpo*_*ojd 5

改为在代码周围使用双引号:

find . | xargs perl -pi -e "s/'conflicts' => '',//g"
Run Code Online (Sandbox Code Playgroud)

  • 我不推荐这个,因为Perl代码中常用的字符很多(最值得注意的是`!`),即使在双引号内也有特殊含义. (3认同)