1

Sed を使用して検索と置換を行う必要があります。に交換/**#していdefine('WP_POST_REVISIONS', 3);\n\n/**#ます。

しかし、適切なエスケープがわかりません。(明らかに必要な)一重引用符をエスケープした後でも、まだbash: syntax error near unexpected token ')'

この場合の適切なエスケープは何ですか?

4

2 に答える 2

2

sed エスケープではなく、bash エスケープです。

'単一引用符 ( )内ではエスケープは機能しません

"パラメータに "$\ などの特殊文字がない場合 (または必要に応じてエスケープする場合) は、二重引用符 ( ) を使用できます。

find /start/path -name *.html -exec sed -ie "s/abc/define('WP_POST_REVISIONS', 3);/g" '{}' \;

または$'、エスケープをサポートするを使用して引用します。

find /start/path -name *.html -exec sed -ie $'s/abc/define(\'WP_POST_REVISIONS\', 3);/g' '{}' \;
于 2013-06-06T15:50:38.073 に答える
2

あなたを置き換えてみてください:

find /start/path -name *.html -exec sed -ie 's|/**#|define(\'WP_POST_REVISIONS\', 3);|g' '{}' \;

と:

find /start/path -name '*.html' -print0  \
  | xargs -0 -n 1 sed -ie 's|/\*\*#|define('\''WP_POST_REVISIONS'\'', 3);\n/\*\*#|g'

そしてそれがあなたに与えるものを教えてください

(ファイル内の実際の文字列 "/**#" を探しているのではないかと推測しました。実際の文字列でない場合は、実際に探しているものの例を教えてください)

于 2013-06-06T15:57:35.847 に答える