2009/1/5 Renato de Oliveira Diogo <renato.di...@gmail.com> > 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? > > Renato,
A sua solução serve como exercício e deve ter sua utilidade, mas a forma mais fácil é utilizando o sed puro. <MODERACAO> Você tentou utilizar a solução do Marlon? Ela não funciona, mas já seria uma forma legal de você dar valor à atenção que ele te deu ao responder. Você mostra o erro e como tentou resolver. Ele te retorna. Isto é saudável pra lista... </MODERACAO> Uma solução simples com o sed é (corrigindo a solução do Marlon): sed '/VirtualHost \*:80>/,/\/VirtualHost>/d' arquivo Observe que isto não irá alterar o arquivo, mas irá jogar na saída padrão o conteúdo do arquivo sem as linhas que você quer remover. -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP [As partes desta mensagem que não continham texto foram removidas]