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

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

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


From: Renato de Oliveira Diogo
Subject: Re: [SPAM] Re: [shell-script] Remoção de um bloco de texto de um arquivo
Date: Mon, 5 Jan 2009 17:10:10 -0200

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

address@hidden
address@hidden



2009/1/5 [DirectWeb] - Marcio <address@hidden>:
>
> 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.
>>
>> ------------------------------------
>>
>> ----------------------------------------------------------
>> 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
>>
>>
>>
>>
>>
>
> 


reply via email to

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