sed 命令将表达式写入外部 ifmodule 中

sed 命令将表达式写入外部 ifmodule 中

我的配置文件有这个

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

我想index.php改为index.temp

我创建了这个

sed -i -e '/s/index.php/index.temp/‘ dir.conf

这使得,

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
ndex.php/index.temp/

答案1

您的s///命令以 a 为前缀/,这会导致sed误解。它看起来也好像终止单引号不是普通的单引号(而不是'),但这可能只是这个问题的一个问题。

要将字符串的所有实例更改index.phpindex.temp某个文件中的所有实例dir.conf,请使用

sed -i 's/index\.php/index.temp/g' dir.conf

模式中的点需要转义,因为它在正则表达式中很特殊(您也可以使用[.]代替\.)。另请注意,这是使用-i“就地编辑”,即一般不便于携带

为了确保您不会更改myindex.phpmyindex.tempindex.php3into index.temp3,请使用\<and \>(或\b代替两者)来匹配单词边界:

sed -i 's/\<index\.php\>/index.temp/g' dir.conf

相关内容