[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Ajuda com regex e laço
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] Ajuda com regex e laço |
Date: |
Mon, 15 Feb 2010 16:49:59 -0200 |
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 - address@hidden;
- RJ ligue (21)2210-6061;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.
Em 15 de fevereiro de 2010 16:09, Cristiano <address@hidden> 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]
- Ajuda com regex e laço, Cristiano, 2010/02/15
- Re: [shell-script] Ajuda com regex e laço, Fabiano Caixeta Duarte, 2010/02/15
- Re: Ajuda com regex e laço, Cristiano, 2010/02/15
- Re: [shell-script] Re: Ajuda com regex e laço, Julio C. Neves, 2010/02/15
- Re: Ajuda com regex e laço, Cristiano, 2010/02/15
- Re: [shell-script] Re: Ajuda com regex e laço, Julio C. Neves, 2010/02/15
- Re: Ajuda com regex e laço, Cristiano, 2010/02/15
- Re: [shell-script] Re: Ajuda com regex e laço, Julio C. Neves, 2010/02/15
- RE: [shell-script] Re: Ajuda com regex e laço, Marcio Gil, 2010/02/15
Re: Ajuda com regex e laço, Cristiano, 2010/02/15
Re: [shell-script] Ajuda com regex e laço,
Julio C. Neves <=
Re: Ajuda com regex e laço, Cristiano, 2010/02/16