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

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

RES: [shell-script] Colocar arquivos em colunas


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Colocar arquivos em colunas
Date: Fri, 28 Mar 2003 08:53:33 -0300

i=2
cat arquivo | while read linha; do
        echo "$linha" | cut -f`expr $i - 1`-$i -d"," | tr "," " "
        i=`expr $i + 2`
done

[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden

Carlo Eduardo, aí vai uma solução sem teste nem otimização. Dá uma ligada
pra mim, preciso falar com vc.

cat arquivo | while read linha; do
        i=2
        pedaco=x
        while [ $pedaco ]; do
                pedaco=`echo "$linha" | cut  -f$(expr $i - 1)-$i -d","`
                echo "$pedaco" | tr "," "       "
                i=`expr $i + 2`
        done
done

[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden

> -----Mensagem original-----
> De: Eddy [mailto:address@hidden]
> Enviada em: quinta-feira, 27 de março de 2003 14:39
> Para: address@hidden
> Assunto: [shell-script] Colocar arquivos em colunas
> 
> 
> Caros amigos boa tarde!
> 
> Tenho uma dúvida que consegui resolver a algum tempo mas que 
> me perdi em
> como se faz..
> tenho um arquivo   (a,a1,b,b1,c,c1,d,d1) quero colocar assim...!!!!
> a     a1
> b     b1
> c     c1
> 
> Lembro que usei o tr para isso mas me perco em sintaxes.....
> Agradeço o help
> 
> Sem mais,
> 
>         Carlos Eduardo Dionizio
>      Analista de Suporte - UNIX
> Universidade Estácio de Sá - CPD
> 
> Demolidor .."Padre eu luto pq não tenho medo"
> Padre.." Pena meu filho, pois um homem sem medo é um homem 
> sem esperanças"
>                                              (Filme - Demolidor)
> ----- Original Message -----
> From: "Julio Cezar Neves - DATAPREVRJ"
> <address@hidden>
> To: <address@hidden>
> Sent: Thursday, March 27, 2003 12:00 PM
> Subject: RES: [shell-script] CSV Parsing
> 
> 
> > Olá Dorneles,
> > vc pode matar 2 coelhos com uma só cajadada fazendo:
> >
> > OldIFS="$IFS"
> > IFS=";"
> >
> > while read campo1 campo2 campo3
> > do
> >     echo "$campo1---$campo2---$campo3"
> > done < $1
> >
> > Para ficar + legível poré menos otimizado, vc poderia fazer 
> a leitura
> assim:
> >
> > cat $1 |
> > while read campo1 campo2 campo3
> > do
> >     echo "$campo1---$campo2---$campo3"
> > done
> >
> > Como vc deve saber o while é executado enquanto o cmd que o 
> segue - neste
> > caso o read - seja bem sucedido, assim sendo, quando o cmd 
> ler um EOF, o
> seu
> > código de retorno ($?) será != 0, saindo assim do loop. Veja só
> >
> > Prompt> read lixo < /dev/null
> > Prompt> echo $?
> > 1
> >
> > Neste exemplo o /dev/null manda, de cara, um EOF para o read. Quando
> listei
> > o código de retorno, ele estava = 1, desta forma 
> demonstrando o que falei
> no
> > parágrafo anterior.
> > [ ]s,
> > Julio Cezar Neves
> > -Eu Apoio o Software Livre-
> > -I Support Free Software-
> > * +55 21 2528-7070  /  9853-4044
> > *address@hidden
> >
> >
> > > -----Mensagem original-----
> > > De: Dorneles Treméa [mailto:address@hidden]
> > > Enviada em: quarta-feira, 26 de março de 2003 22:58
> > > Para: address@hidden
> > > Assunto: [shell-script] CSV Parsing
> > >
> > >
> > > Olá pessoal,
> > >
> > > preciso de uma luz... :-)
> > >
> > > Estou iniciando um script que vai parsear um
> > > arquivo CSV, na verdade separado por ";", e
> > > executar algums comandos dependendo do conteúdo.
> > >
> > > O arquivo é composto por várias linhas no formato:
> > >
> > > campo1;campo2;campo3;campoN
> > >
> > > Eu estou tentando usar o $IFS para separar as
> > > linhas e depois as colunas, mas ainda não tive
> > > sucesso.
> > >
> > > Primeiro problema: pegar linha a linha do arquivo.
> > >
> > > ----------------------
> > >
> > > old_IFS="$IFS"
> > > IFS="\012"
> > >
> > > for linha in `cat $1` ; do
> > >   echo $linha
> > > done
> > >
> > > IFS="$old_IFS"
> > >
> > > ----------------------
> > >
> > > Isso deveria mostrar cada uma das linhas certo?
> > > Mas não mostra... (devo estar errando em algo)
> > >
> > > A minha ideia é pegar cada uma das linhas e passar
> > > para uma função.
> > >
> > > Segundo teste: passar a linha para uma função
> > > que quebre os campos.
> > >
> > > ----------------------
> > >
> > > processa() {
> > >    /path/to/comando $1 $3
> > > }
> > >
> > > for linha in `cat $1` ; do
> > >   processa $linha
> > > done
> > >
> > > ----------------------
> > >
> > > Onde eu chamo um comando usando apenas alguns dos
> > > campos passados.
> > >
> > > Deve ser simples, mas eu devo ter perdido o cérebro
> > > essa semana em algum lugar... ;-)
> > >
> > > Valeu.
> > >
> > > T+
> > >
> > > --
> > >
> > > Dorneles Treméa
> > > Caxias do Sul - RS - Brasil
> > > +55 54 9114 9312 - UIN: 2413568
> > > X3ng Web Technology <http://www.x3ng.com.br>
> > >
> > > -----BEGIN GEEK CODE BLOCK-----
> > > Version: 3.12
> > > GCS/IT d- s:->: a23 C+++ UBL++++$ P--- L++ E-- W+++
> > > N++ o? K? w+ O M+ V-- PS+ PE- Y-- PGP++ t+ 5 X++ R+
> > > tv+ b(++) DI+ D++ G+>+++ e++>++++ h---- r+++ y+++**
> > > ------END GEEK CODE BLOCK------
> > >
> > >
> > >
> > > [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: address@hidden
> > > 
> ---------------------------------------------------------------------
> > > Esta lista é moderada de acordo com o previsto em
> > http://www.listasdiscussao.cjb.net
> > 
> ---------------------------------------------------------------------
> >
> >
> > Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> > http://br.yahoo.com/info/utos.html
> >
> >
> >
> > 
> ---------------------------------------------------------------------
> > 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.listasdiscussao.cjb.net
> > 
> ---------------------------------------------------------------------
> >
> >
> > Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html
> >
> 
> 
> 
> ---------------------------------------------------------------------
> 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.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 



reply via email to

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