shell-script-pt
[Top][All Lists]
Advanced

[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 ;







reply via email to

[Prev in Thread] Current Thread [Next in Thread]