Fala Cristiano, creio que vc conseguiria fazer o que quer, de forma bem simples:
grep -o '<cProd>[[:alnum:] ]*' *.xml O último *.xml é para pesquisar em todos os arquivos do diretório, porém nesse caso, ele te volta algo como: arquivo: produto Então se vc quser somente o produto, terá de fazer um cut -f2 -d: na saída do grep Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - SP turma de Shell em 29/03 - ligue (11)2125-4747; - Floripa turma Shell em 12/http://www.seventreinamentos.com.br; - DF turma de Shell em 17/04 - ligue (61) 3223-3000; - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com; - RJ ligue (21)2210-6061; - Turmas fechadas em outras cidades ligue (21) 8112-9988. Em 15 de fevereiro de 2010 16:09, Cristiano <boxferr...@gmail.com> escreveu: > > > Salve ilustres, boa tarde. > > Estou montando um script para extrair dados de um arquivo XML (nota fiscal > eletronica). > > Dentro do XML há um campo 'cProd'. Preciso do conteúdo dele, porém, podem > haver inúmeros registros cProd (mínimo de 1). Exemplo: > > (...) > <cProd>001</cProd> > <xProd>Nome do produto</xProd> > <cProd>002</cProd> > <xProd>Nome do outro produto</xProd> > (...) > <cProd>NNN</cProd> > <xProd>Nome do produto NNN</xProd> > (...) > > A extrutura do arquivo não está organizada hierarquicamente linha por linha > como no exemplo. É tudo uma única linha. > > Usei a seguinte regex: > > grep -Eo '<cProd>.*<\/cProd>' > > O problema é que esta regex casa com todo o conteúdo da primeira tag > <cProd> até a última tag </cProd>, retornando do código do primeiro produto > e até o último (NNN). > > Tenho 2 dúvidas: > > 1) O que posso colocar no lugar do '.*' para fazer ele pegar apenas o > primeiro campo "cProd", parando na primeira tag </cProd> que encontrar? > > 2) Uando esta regex, como posso criar um laço para extrair todos os campos > cProd do arquivo (pode vir com as tags junto, que eu me viro em removê-las)? > Algo que me dê o seguinte resultado: > > # extrai_codigo.sh nome_do_arquivo.xml > nome_do_arquivo.xml:501 > nome_do_arquivo.xml:502 > nome_do_arquivo.xml:503 > > Minha necessidade é pegar um diretório com N (leia-se trocentos) arquivos > XML e saber quais os códigos de produto em cada um deles. > > Abraço > > Cristiano > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- 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: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- 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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html