[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: |
Renato de Oliveira Diogo |
Subject: |
Re: [shell-script] Remoção de um bloco de texto de um arquivo |
Date: |
Mon, 5 Jan 2009 16:11:41 -0200 |
Olá pessoal
então, diretamente com o sed eu não sei trabalhar...
Agora desenvolvi um laco em que eu pego as linhas de inicio e fim do
bloco, aí com o sed ficaria mais facil.... vejam abaixo:
===
COUNT=0;
MARK=0;
while read L;
do
let COUNT++;
if [ "$L" == '<VirtualHost *:80>' ];
then
LI=$COUNT;
elif [ "$L" == '</VirtualHost>' -a "$MARK" == 1 ];
then
LF=$COUNT;
break;
elif [ "$L" == "ServerName subdominio.dominio.com.br" ];
then
MARK=1;
fi
done < teste.txt
===
Agora tenho duas variáveis: LI que tem o número da linha onde inicia o
bloco; LF que tem o número da linha onde termina o bloco.
Com isto bastaria dar
===
if [ $MARK == 1 ]
then
sed -i '$LI,$LFd' texte.txt
fi
===
Agora o problema é que como a string está fechada com aspas simples, o
shell não está convertendo a variável para o número. Como eu
resolveria isso?
[]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 jimmy <address@hidden>:
> 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.
>
- Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05
- Re: Remoção de um bloco de texto de um arquivo, marlon_mca, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo,
Renato de Oliveira Diogo <=
- Re: [SPAM] Re: [shell-script] Remoção de um bloco de texto de um arquivo, [DirectWeb] - Marcio, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06