regex para substituir uma palavra em um bloco em um arquivo?

0

Se eu tiver:

<Directory />
 words
 allow
 bus
</Directory>

Existe um regex que pode substituir o allow por outra coisa e manter intactas as outras palavras e o bloco?

Por isso, deve parecer:

<Directory />
 words
 not
 bus
</Directory>

ou

<Directory />
 words
 bus
</Directory>

porque vou substituir a palavra por outra coisa ou retirá-la. Eu tentei um regex como este:

(<Directory />(\s|\w|\n)+)allow((\s|\n|\w)+</Directory>)

e substitua-o por \n not , mas ele substitui o allow e exclui a segunda metade do bloco que eu não quero.

Então existe um regex que pode substituir uma palavra em um bloco e manter o bloco intacto?

    
por W.Smith 26.07.2018 / 19:26

1 resposta

0

Eu não entendo completamente seu problema específico, um simples sed pode alcançar o que você está mostrando:

$ sed 's/\ballow\b/not/g' afile
<Directory />
 words
 not
 bus

O \b protege para substituir apenas palavras, como allow , pela string not . Se você quiser excluir linhas que contenham a string allow , você pode usar sed para fazer isso também:

$ sed '/\ballow\b/d' afile
<Directory />
 words
 bus
</Directory>
    
por 26.07.2018 / 19:39