我需要使用 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" '{}' \;
或者引用 using $'
,它支持转义:
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'
告诉我们它给了你什么
(我试图猜测您正在寻找文件中的实际字符串“/**#”......如果不是实际字符串,请给我们提供您真正要查找的内容的示例)