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 address@hidden
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 address@hidden
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
address@hidden
address@hidden
------------------------------------
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: address@hidden
---------------------------------------------------------------------
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