如果您想在 sed 中使用正则表达式匹配作为条件(或“地址”),则必须将其用斜杠括起来:
sed "/define('WP_DEBUG', false);/idefine('FS_METHOD', 'ftpext');"
请注意,我使用了双引号,因此可以在内部使用单引号而不会破坏表达式。
但是,如果仅在以下行为空时才应替换字符串,我将切换到 Perl:
#!/usr/bin/perl -p
s/^$/define('FS_METHOD', 'ftpext');/ if $previous eq "define('WP_DEBUG', false);\n";
$previous = $_;
测试它:
echo "define('WP_DEBUG', false);
non empty line.
define('WP_DEBUG', false);
previous line is empty
What about last line?
define('WP_DEBUG', false);" | 1.pl
输出:
define('WP_DEBUG', false);
non empty line.
define('WP_DEBUG', false);
define('FS_METHOD', 'ftpext');
previous line is empty
What about last line?
define('WP_DEBUG', false);