|
From: | Mauricio |
Subject: | Re: [shell-script] Lista de Produtos |
Date: | Fri, 25 Nov 2005 16:36:45 +0000 |
User-agent: | Mozilla Thunderbird 1.0.7 (X11/20050923) |
O anterior foi com array... e nem ficou com os ';' Pensei melhor e resolvi fazer um sem usar array que ficou exatamente como vc queria :-) Olha aí: #!/bin/bash #brinquedo cat teste | while read linha do ID=`echo $linha | head -c1` FIM=`echo $linha | tail -c2` if [ "$ID" != "$i" ] then echo -ne "\n"$linha i="$ID" else echo -n ','" $FIM" fi done echo -e "\n" Comentários: cat teste | while read linha 'teste' é o nome do arquivo e 'linha' é o nome da variável que irá conter a linha inteira ID=`echo $linha | head -c1` FIM=`echo $linha | tail -c2` ID é o primeiro dígito da linha, que eu estou usando como identificador, já que parece que o produto tem sempre o mesmo número FIM é o último dígito da linha, que vou usar pra "colar" no final de linhas que são repetidas O resto é só alegria... Abraćo, Ricio Humberto Pereira wrote:
Ola, para esses casos, awk eh o seu melhor amigo awk -F';' ' { detalhes[$1]=$1 ";" $2 ";" $3; if(lojas[$1]) lojas[$1]=lojas[$1] "," $4; else lojas[$1]=$4; } END { for ( item in detalhes ) print detalhes[item] ";" lojas[item] }' a.txt [begnini 0 coke tmp]$ cat a.txt 1;FARINHA;MAIS DETALHES;1 1;FARINHA;MAIS DETALHES;3 1;FARINHA;MAIS DETALHES;5 1;FARINHA;MAIS DETALHES;2 3;FEIJÃO;MAIS DETALHES;2 3;FEIJÃO;MAIS DETALHES;4 7;ARROZ;MAIS DETALHES;5 7;ARROZ;MAIS DETALHES;3 7;ARROZ;MAIS DETALHES;6 [begnini 0 coke tmp]$ []s Humberto Pereira Enderson Maia wrote:Olá, tenho uma lista de produtos que quero ajustar, consegui chegar até um ponto, mas não saio daê. Tenho uma listagem de produtos com COD;DESCRICAO;DETALHES;LOJA onde o ultimo campo é a loja ontem tem um saldo do produto no estoque. Exemplo: -- INICIO 1;FARINHA;MAIS DETALHES;1 1;FARINHA;MAIS DETALHES;3 1;FARINHA;MAIS DETALHES;5 1;FARINHA;MAIS DETALHES;2 3;FEIJÃO;MAIS DETALHES;2 3;FEIJÃO;MAIS DETALHES;4 7;ARROZ;MAIS DETALHES;5 7;ARROZ;MAIS DETALHES;3 7;ARROZ;MAIS DETALHES;6 -- FIM quero transformar o arquivo ACIMA no arquivo ABAIXO: -- INICIO 1;FARINHA;MAIS DETALHES;1,3,5,2 3;FEIJÃO;MAIS DETALHES;2,4 7;ARROZ;MAIS DETALHES;5,3,6 -- FIM Ou seja, para não repetir tudo, eu simplesmente transformo o ultimo campos nas lojas onde tem o produto, separado por vírgulas. Em minhas tentativas, consegui isolar um arquivo somente com os produtos sem repetição e sem a loja. $ cat arquivo | cut -d";" -f 1-3 | uniq 1;FARINHA;MAIS DETALHES 3;FEIJÃO;MAIS DETALHES 7;ARROZ;MAIS DETALHES não usei o sort, pois os produtos já estão juntos, e coloquei num arquivo produtos $ cat arquivo | cut -d";" -f 1,4 1;1 1;3 1;5 1;2 3;2 3;4 7;5 7;3 7;6 Agora como juntar as duas coisas ? pra gerar o que e quero, que é isso (REPETINDO) -- INICIO 1;FARINHA;MAIS DETALHES;1,3,5,2 3;FEIJÃO;MAIS DETALHES;2,4 7;ARROZ;MAIS DETALHES;5,3,6 -- FIM Espero estar indo no caminho certo, mas não consegui passar daê. Sem mais, -- -- Enderson Maia ICQ: 8817986 MSN: endersonmaia[arroba]gmail[ponto]com Linux User: 286130 ============================= --------------------------------------------------------------------- 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: address@hidden --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Links do Yahoo! Grupos--------------------------------------------------------------------- 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: address@hidden --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net ---------------------------------------------------------------------Links do Yahoo! Grupos
[Prev in Thread] | Current Thread | [Next in Thread] |