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

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

Re: [shell-script] Lista de Produtos


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









reply via email to

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