shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Remoção de um bloco de texto de um arquivo


From: jimmy
Subject: Re: [shell-script] Remoção de um bloco de texto de um arquivo
Date: Mon, 5 Jan 2009 17:08:27 -0200
User-agent: Mutt/1.4.2.3i

bem simples essa forma, só atento para o detalhe de que a parte do
"/dominio.com.br/d" deve ser colocado fora do último "}" caso se queira
exibir na saída apenas o bloco que possui a expressão.

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


On Mon, Jan 05, 2009 at 04:43:19PM -0200, [DirectWeb] - Marcio wrote:
> 
> 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 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.
> >
> > ------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]