Como substituir uma string por outra em um arquivo de texto

1

Eu gostaria de substituir uma determinada string em um arquivo de texto por outra, mas com um detalhe extra.

Exemplo:

Se o conteúdo do arquivo for:

Library Hello1
===============
any text here
version: 0.1
--------------

Library Hello2
===============
any text here
version:0.1
--------------

Library Hello3
===============
any text here
version: 0.2
--------------

Eu gostaria de grep de todas as linhas contendo a palavra Biblioteca e substituir todas as "Bibliotecas" pela outra palavra, por exemplo. "myStr". No entanto, isso só deve ser feito para aqueles cuja versão é, por exemplo, 0.1. Todos os outros devem ser ignorados.

Por favor note que a pesquisa / substituição deve ser feita dentro de cada bloco de código. Os blocos são delimitados por ===== e -----.

Observação: posso pesquisar e substituir, mas não sei como pesquisar simultaneamente a versão dentro de um bloco.

    
por Pedro 21.06.2018 / 11:44

1 resposta

0

Você pode tentar este sed

sed '/^Library/!b;:A;N;/version/!bA;/0\.1$/s/^Library/myStr/' infile

Procure primeiro pela biblioteca.
Se encontrar obter toda a linha seguinte até a versão.
Quando encontrar, procure por 0,1 e faça a alteração, se estiver tudo bem.

    
por 21.06.2018 / 13:29