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.