Alain, nem tudo está perdido. Existem 2 formas um tanto não-ortodoxas de remover estas divs completamente.
Estou falando de vc, via SED, inserir um codigo css ou javascript na pagina para que não mostre estas divs no seu browser. Se o navegador que vc usa no palm suporta um destes recursos, fica facil. Entretanto vc pode fazer uma boa combinação de tecnicas de transformação de texto para solucionar o seu problema de forma 100% shell primeiro imagine o seguinte arquivo: $ cat index.html <html> <head>jghljkhsdfklgsdf</head> <body> <div id="A">A</div> <div id="B">B</div> <div id="C">C</div> <div id="D"> <div id="E">E</div> </div> </body> </html> Bom, vc tem 5 divs, sendo que a div E está dentro da div D Vc simplesmente ABOMINA as divs B e D, com tudo o que estiver dentro delas. Viveria MUITO melhor sem elas. Como fazer pra acabar com a raça delas? Se o arquivo fosse assim aaaa;BBBB;ccc;DDD seria facil apagar os campos BBBB e DDD - é um arquivo delimitado por um caracter específico. E arquivos delimitador por um caracter específico são faceis de trabalhar via awk. no caso do arquivo html vc não tem este 'caracter' mas, e se colocassemos algo como '£' (simbolo de libra) para demarcar os campos? sed 's|</*div[^>]*>|£&£|g' index.html dessa forma todos as tags <div> e </div> ficam 'delimitadas'. Por que isso? Ora... eu digo para o awk ler campo por campo, cada campo é definido como sendo um conjunto de caracteres delimitado por libra, quando eu encontrar um <div id=oqueeuquero> eu entro no modo 'apagar'. só irei sair quando encontrar um correspondente fim a esta <div>, que seria um </div>! awk -v RS='£' 'BEGIN{ J=0;} /^<div/{ if ($0 ~ /id="(B|D)"/) J=1; else if (J > 0) J++; } (J == 0){print} /^<\/div/{ if (J > 0) J--; }' o que isso faz? quando encontrar um id que eu não gosto, ele diz para o J ser 1. sendo diferente de zero, ele nunca sera impresso! J só voltara a ser zero quando o respectivo final dessa div for encontrado -- por isso eu incremento e decremento J, pois eu posso ter uma div dentro da outra, como no caso do E dentro do D sed 's|</*div[^>]*>|£&£|g' index.html | awk -v RS='£' 'BEGIN{ J=0;} /^<div/{ if ($0 ~ /id="(B|D)"/) J=1; else if (J > 0) J++; } (J == 0){print} /^<\/div/{ if (J > 0) J--; }' Bacana heim? o simbolo de libra é 'comido' pelo awk, o html fica com umas quebras de linha a mais, porem o resultado é : <html> <head>jghljkhsdfklgsdf</head> <body> <div id="A"> A </div> <div id="C"> C </div> </body> </html> como o browser ignora estes espaços a mais, fica tudo numa boa, mas se vc quer algo bonito pode colocar mais um pipe para um tr -s '\n' B e D foram pro saco, não foi preciso apelar para C, Lisp, Pascal ou mesmo Javascript (embora um style:none [css] possa produzir um efeito semelhante). Agora é questão de vc testar em um HTML real, por que pode haver muitos casos que não funciona 100% Deu trabalho, mas minha hora de almoço foi rapida. Outro uso pratico dessa tecnica poderia ser algum XML de configuração de algum programa, ou mesmo um arquivo de configuração que não seja obvio como devemos edita-lo. []´s Tiago (e não perca a fé no shell) On 3/14/07, Alain M. <[EMAIL PROTECTED]> wrote: > > > > > > > Última chamada... visto ninguém mais fazer comentário, deduzo que não é > possível resolver este problema com alguma ferramenta de shell. > Começarei a estudar a solução em "C" > > Se alguém ainda tiver uma sugestão, por favor me avise antes que eu > começe ;-) > > Grato, > Alain > > Alain M. escreveu: > > > Oi Bruno, > > > > Sim os "ids" dos divs são específicos. > > > > Respondi na minha própria mensagem porque tem o exemplo simplificado em > > baixo, um exemplo do texto original seria esta página: > > http://g1.globo.com/Noticias/0,,MUL9810-5603-1853,00.html > > e manda salvar como... ou abre direto o código fonte. Por exemplo nesta > > página eu quero apagar os tags: > > <div id="glbBarra" > > <div id="lateral"> > > > > O exemplo abaixo deveria servir para testes, acho que contém todos os > > casos encontrados > > > > Espero encontrar uma solução sem ter que escrever um programa sm C... > > > > Alain > > > > Alain M. escreveu: > >> Ok, Bruno, não fui claro novamente, vou tentar de novo > >> > >> Na página, tem vários tags quecomeçam com "<div" eu quero tirar uma > >> delas, no meu exemplo a que começa com '<div id="Label"' até o "</div>" > >> *correspondente*. > >> > >> Só que dentro desse div tem outro div, então tem que achar o > >> correspondente, independentemente de quantos tem aninhados dentro. > >> > >> Alain > >> > >> Bruno Gunter Fricke escreveu: > >>> Alain, > >>> > >>> Você precisa encontrar um ponto em comum em seu texto para usar o sed. > >>> Você quer manter algumas "divs" e outras não. Não tem como fazer o que > você deseja se não for informado exatamente o que você precisa cortar do > texto. > >>> > >>> Agradeço pelas dicas, mas acho que me expliquei mal. > >>> > >>> Dica do Tiago: sed '/^<div/,/^<\/div/d' arquivo > >>> Dica do Flavio: tr '\n' '#' < txt | sed 's/<.*>//' | tr '#' '\n' > >>> > >>> Na verdade eu quero é tirar um TAG específico no meio de uma página > >>> grande em html. Refiz meu exemplo para ficar mais claro, eu preciso > >>> tirar o TAG que começa com: <div id="Label" > >>> > >>> -----Original----- > >>> texto que fica <div class="Lxx">também fica</div> > >>> <div id="Label" class="x1024"> > >>> mais texto > >>> <div class="Label2"></div> > >>> lixo</div> > >>> mais um que fica <div class="Lyy">ficante ídem</div> > >>> > >>> -----editado------ > >>> texto que fica <div class="Lxx">também fica</div> > >>> mais um que fica <div class="Lyy">ficante ídem</div> > >>> > >>> Só por curiosidade, a idéia é limpar páginas para ler offline no Palm. > >>> Por exemplo: > >>> http://g1.globo.com/Noticias/0,,MUL9810-5603-1853,00.html > >>> > >>> Mais uma vez, grato, > >>> Alain > > > > > > > > ---------------------------------------------------------- > > 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 > > > > > > > > > > > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer