Jimmy,

Eu tenho esse script pronto e utilizo essa linha do sed:


sed "/<VirtualHost/{:a;/<\/VirtualHost/!{N;ba;};/dominio.com.br/d;}"



[]s


Marcio


jimmy escreveu:
> On Mon, Jan 05, 2009 at 12:11:18PM -0200, Renato de Oliveira Diogo wrote:
>   
>> Senhores, bom dia
>>
>> estou desenvolvendo um script que tem o intuito de remover um bloco de
>> texto. Um exemplo do arquivo abaixo:
>> ===
>> <VirtualHost *:80>
>>     ServerAdmin [email protected]
>>     DocumentRoot /var/www/vhosts/dominio.com.br/httpdocs
>>     ServerName  www.dominio.com.br
>>     ServerAlias dominio.com.br
>>     ErrorLog /var/www/vhosts/dominio.com.br/statistics/logs/error_log
>>     CustomLog /var/www/vhosts/dominio.com.br/statistics/logs/access_log 
>> common
>>     CBandUser dominio
>> ...
>> ...
>>     <IfModule mod_ssl.c>
>>         SSLEngine off
>>     </IfModule>
>> </VirtualHost>
>>
>> <VirtualHost *:80>
>>     ServerName subdominio.dominio.com.br
>>     ServerAdmin [email protected]
>>     DocumentRoot 
>> /var/www/vhosts/dominio.com.br/subdomains/subdominio/httpdocs
>>     CustomLog /var/www/vhosts/dominio.com.br/statistics/logs/access_log 
>> combined
>>     ErrorLog /var/www/vhosts/dominio.com.br/statistics/logs/error_log
>> ...
>> ...
>>         Options -Includes -ExecCGI
>>     </Directory>
>> </VirtualHost>
>> ===
>>
>> O bloco que preciso remover inicia com <VirtualHost *:80> e termina
>> com seu fechamento </VirtualHost>.
>> Porém, pode haver mais de um bloco de texto que inicia e fecha com
>> estes. Para diferenciar, o bloco de texto deve conter "ServerName
>> subdominio.dominio.com.br"
>>
>> Sei que a remoção eu teria que fazer com o sed, porém como eu pego
>> essas linhas especificas que me complicou a vida.
>>
>> Alguem tem alguma ideia, que poderia me ajudar?
>>
>> []s
>> ________________________________________________
>> Renato de Oliveira Diogo
>>
>> Bacharel em Ciência da Computação
>> UNESP - Bauru
>>
>> LPIC1 - Linux Professional Institute Certification - Nível 1
>>
>> [email protected]
>> [email protected]
>>
>> ------------------------------------
>>     
>
> saudações renato,
>
> não entendi muito bem o que você quis dizer com "remover um bloco de
> texto" se era para apagá-lo de dentro do arquivo ou para exibir somente
> esse bloco na tela, de qualquer forma aí vai um script simples, espero
> que lhe sirva:
>
> #!/usr/bin/sed -f
>
> /<VirtualHost \*:80>/ {
>   :a;
>   N;
>   /<\/VirtualHost>/ bb;
>   ba;
> };
> :b;
> /ServerName subdominio\.dominio\.com\.br/!d;
>
> se preferir junte todas as linhas numa só e execute diretamente da linha
> de comandos, os ";" já estão nos seus lugares.
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: [email protected]
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>
>
>   

Responder a