我正在尝试使用 Bash 脚本自动配置 Ubuntu Vagrant 框。一切顺利,但我在配置 Apache 以允许.htaccess
文件覆盖时遇到了困难。在我的配置文件中,有以下块:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
我所需要做的就是AllowOverride None
用替换AllowOverride all
。这似乎是 的任务sed
,但是这个配置文件中还有其他<Directory>
块,我不想允许覆盖。
当特定字符串出现在两个其他特定字符串之间时,如何使用 sed 将特定字符串替换为新字符串?
换句话说,AllowOverride None
当它出现在<Directory /var/www/>
和之间时我该如何替换</Directory>
?
我可以使用以下命令来获取我感兴趣的块:
sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
答案1
sed
支持以下形式的模式范围:
sed '/startpattern/,/endpattern/ <sed-commands>' file
例如:
sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf