Opa senhores Fabiano e Marlon, de forma alguma tive a intenção de ignorar uma resposta dada por um colega, longe de mim. A solução que postei foi a que escrevi e não tinha visto até o momento em que postei a resposta do colega. Caso tenho chateado alguem peço desculpas sinceras.
Bom, mas vamos lá... sed '/VirtualHost \*:80>/,/\/VirtualHost>/d' arquivo a solução postada pelo Marlon (e corrigida um detalhe pelo Fabio), remove sim blocos onde inicia e termina com as strings passadas. Agora, partindo disso, o que precisaria seria apagar somente bloco (pode e vai ter mais de 1 bloco) que contenha dentro dele a string "ServerName subdominio.dominio.com.br". Tem como fazer algum teste interno para somente apagar "d" se existir essa string? []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] 2009/1/5 [DirectWeb] - Marcio <[email protected]>: > > 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 >> >> >> >> >> > >
