Sed を使用して検索と置換を行う必要があります。に交換/**#
していdefine('WP_POST_REVISIONS', 3);\n\n/**#
ます。
しかし、適切なエスケープがわかりません。(明らかに必要な)一重引用符をエスケープした後でも、まだbash: syntax error near unexpected token ')'
この場合の適切なエスケープは何ですか?
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' '{}' \;
あなたを置き換えてみてください:
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'
そしてそれがあなたに与えるものを教えてください
(ファイル内の実際の文字列 "/**#" を探しているのではないかと推測しました。実際の文字列でない場合は、実際に探しているものの例を教えてください)