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" '{}' \;

或者引用 using $',它支持转义:

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 回答