Como encontrar e substituir o padrão dentro de um padrão específico usando sed

0

Parece que 'sed' e eu nunca seremos amigos ...

Como posso encontrar e substituir um padrão dentro de um intervalo (dentro de outro padrão)?

Em palavras: Encontre: AllowOverride None dentro do intervalo a seguir e substitua-o por AllowOverride All

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

Por favor note (se já não estiver pronto): Isto está relacionado ao httpd.conf, que contém muito mais "módulos", todos terminando com </Directory>

Como este comando é usado dentro de um arquivo yaml, seria ótimo conseguir isso com um one-liner (estou ciente de que os one-liners estão ficando feios muito rápido ...).

Além disso: eu confio em usar sed (requisito, não me pergunte por que - pls:))

    
por frank 05.04.2015 / 19:24

1 resposta

2

Com o GNU sed:

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