[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Substituir bloco de strings
From: |
Cristiano |
Subject: |
Re: Substituir bloco de strings |
Date: |
Thu, 26 May 2011 18:58:53 -0000 |
User-agent: |
eGroups-EW/0.82 |
--- Em address@hidden, Samuel Peres <samuel.peres@...> escreveu
>
> Saudações a todos,
>
>
> Estou encontrando dificuldades em substituir um bloco
> específico de strings por espaços em branco. Para ilustrar melhor a minha
> necessidade, segue um exemplo:
>
>
> # cat exemplo
>
> # Dominio testando.com.br
> zone "testando.com.br" {
> type master;
> file "zonas/db.testando.com.br";
> allow-transfer { slave_3; };
> };
>
> # Dominio testando2.com.br
> zone "testando2.com.br" {
> type master;
> file "zonas/db.testando2.com.br";
> allow-transfer { slave_unitelecom; };
> };
>
> # Dominio testando3.com.br
> zone "testando3.com.br" {
> type master;
> file "zonas/db.testando3.com.br";
> allow-transfer { slave_3; };
> };
>
>
> Já tentei uma cobinação de sed e awk para remover apenas o bloco que começa
> com "# Dominio testando2.com.br" e que termina com "};" sem afetar os blocos
> que começam com "# Dominio testando.com.br" e "# Dominio testando3.com.br".
> Até agora não obtive resultados satisfatórios, por isso venho até vocês
> pedir ajuda. Alguma sugestão?
>
>
> Desde já agradeço a atenção de todos da lista,
>
>
> Samuel Peres
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
Se for apenas _remover_ o bloco, é simples. Basta sed, usando o conceito de
intervalos: //,//. Uma vez definido o intervalo trabalhe com ele. Exemplo:
# sed '/^# Dominio testando2.com.br$/,/^};$/d' < /tmp/lixo.txt
onde:
/^# Dominio testando2.com.br$/ --> localiza a linha que contém
# Dominio testando2.com.br
/^};$/ --> seleciona o intervalo até
a próxima linha que contiver };
d --> deleta o bloco
Agora se for para alterar o conteúdo, você terá que, uma vez definido o bloco,
aplicar os comandos de substituição 's' linha por linha, separando-os com ;