shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Re: Ajuda com regex e laço


From: Marcio Gil
Subject: RE: [shell-script] Re: Ajuda com regex e laço
Date: Mon, 15 Feb 2010 23:19:48 -0200

Veja se isto resolve: 

$ t='<cProd>001</cProd><xProd>Nome do
Produto</xProd><pICMS>18</pICMS><vICMS>201.40</vICMS><cProd>002</cPr
od><xProd>Nome do outro
produto</xProd><pICMS>19</pICMS><vICMS>203.50</vICMS>...'

Primeiro colocamos as tags de produto no início das linhas:

$ echo $t | sed 's/<cProd>/\n&/g'

<cProd>001</cProd><xProd>Nome do
Produto</xProd><pICMS>18</pICMS><vICMS>201.40</vICMS>
<cProd>002</cProd><xProd>Nome do outro
produto</xProd><pICMS>19</pICMS><vICMS>203.50</vICMS>...

No seu caso é
$ sed 's/<cProd>/\n&/g' nome_do_arquivo

Depois basta fazer a filtragem:

$ echo $t | sed 's/<cProd>/\n&/g' | sed -n
's/<cProd>\([^<]*\).*<pICMS>\([^<]*\).*<vICMS>\([^<]*\).*/nome_do_ar
quivo:\1:\2:\3/p'
nome_do_arquivo:001:18:201.40
nome_do_arquivo:002:19:203.50

ou
sed 's/<cProd>/\n&/g' nome_do_arquivo | sed -n
's/<cProd>\([^<]*\).*<pICMS>\([^<]*\).*<vICMS>\([^<]*\).*/nome_do_ar
quivo:\1:\2:\3/p'

Para encaixar o nome do arquivo depende de como você vai utilizar o
comando acima.

Marcio Gil.

> -----Original Message-----
> From: Cristiano
> 
> --- Em address@hidden, "Julio C. Neves" 
> <julio.neves@...> escreveu
> >
> > Eu só sei que vc pode usar o paste para colar as taxas que 
> vc quer no código
> > do produto. Não posso te dizer como, pq vc não disse como 
> as alíquotas se
> > amarrariam aos produtos. É a velha máxima latina "Perguntatum
bene,
> > respostas bonas. Perguntatum malem, respostas vagas obtenes" ;-)
> 
> Ok. Não explicar demais para não ficar cansativo.
> 
> 
> O arquivo é um XML de NFe. Os campos do arquivos são 
> delimitados por tags XML. Exemplo:
>  
> <cProd>001</cProd><xProd>Nome do 
> Produto</xProd><pICMS>18</pICMS><vICMS>201.40</vICMS><cProd>00
> 2</cProd><xProd>Nome do outro produto</xProd>(...)
> 
> Ou seja, os campos pICMS e vICMS são tags delimitados de 
> campos. Só que, tal como o exemplo que colei no pastebin, há 
> outros vários campos entre a tag <cProd></cProd> e 
> <pICMS></pICMS> e assim por diante.
> 
> Minha necessidade é extrair o conteúdo dos campos <cProd>, 
> <pICMS> e <vICMS) e colocá-los como uma listagem assim:
> 
> nome_do_arquivo:cProd:pICMS:vICMS
> nome_do_arquivo:cProd:pICMS:vICMS
> nome_do_arquivo:cProd:pICMS:vICMS
> 
> A questão é que podem existir vários produtos (cProd) por 
> arquivo e neste caso, eu preciso de uma linha para cada um 
> deles, com as devidas informações (o próprio código - cProd, 
> a alíquota do ICMS - pICMS e o valor do ICMS - vICMS).
> 
> Dê uma olhada em um exemplo do conteúdo do arquivo, que eu já 
> tinha postado no primeiro reply que dei (update): 
> http://pastebin.com/f7252436a
> 
> Ficou mais claro agora? 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]