8

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

4

3 回答 3

14

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

find . | xargs perl -pi -e 's/\x27conflicts\x27 => \x27\x27,//g'

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

于 2013-05-22T20:20:04.003 回答
11

您不能直接在单引号内对其进行转义,因此要获得单引号,您需要执行以下操作:

$ echo 'i'\''m a string with a single quote'
i'm a string with a single quote

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

于 2013-05-22T20:02:27.883 回答
5

在您的代码周围使用双引号:

find . | xargs perl -pi -e "s/'conflicts' => '',//g"
于 2013-05-22T20:14:02.167 回答