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