8

bash 式で単一の qoutes をエスケープするにはどうすればよいfind . | xargs perl -pi -e 's/'conflicts' => '',//g'ですか? ファイル内の文字列 'conflicts' => '' を置き換えたいですか?

4

3 に答える 3

14

FatalError と gpojd はどちらも適切な解決策を提供しています。もう1つのオプションでこれを締めくくります:

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

これが機能するのは、Perl ではs/.../.../表記がバックスラッシュ エスケープをサポートしているためです。\x2716 進数のエスケープです ( '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

これにより、引用された部分が終了し、引用符の外側に表示される単一引用符がエスケープされ、再び引用が開始されます。結果は 1 つの引数のままです。

于 2013-05-22T20:02:27.883 に答える
5

代わりに、コードを二重引用符で囲みます。

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