如何使用 sed 在特定模式中查找和替换模式

如何使用 sed 在特定模式中查找和替换模式

看来“sed”和我永远不会成为朋友......

如何查找并替换一定范围内(另一个模式内)的模式?

换言之:查找:AllowOverride None在以下范围内并替换为AllowOverride All

...
<Directory "/var/www/html">
some text
more text
some comments
AllowOverride None
more text
</Directory>
...

请注意(如果尚未完成):这与 httpd.conf 有关,其中包含更多“模块”,全部以</Directory>

由于此命令是在 yaml 文件中使用的,因此使用单行代码来实现这一点会很不错(我知道,单行代码很快就会变得丑陋......)。

另外:我依赖使用 sed (要求,不要问我为什么 - 请:))

答案1

使用 GNU sed:

sed -i -e '/<Directory "\/var\/www\/html">/,/<\/Directory>/{s/AllowOverride None/AllowOverride All/}' filename

相关内容