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

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

Re: [shell-script] Vários Arquivos e Uma Saída.


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Vários Arquivos e Uma Saída.
Date: Tue, 27 Sep 2005 15:11:36 -0300

humm terminei o codigo e nem expliquei...

Quando vc quer fazer algo como uma tabela deste tipo, vc tem que ver
quais arquivos tem A, quais tem B, quais tem C.

Então vc tem 2 laços - o primeiro pega os valores diferentes. o
seguindo pega cara arquivo. o que vc tem que fazer é

varia valor
varia arquivo
imprimir X quando encontra o valor no arquivo, senão deixar em branco.
fim varia arquivo
fim varia valor

o resto é firula pra ficar bonitinho. A linha mais importante é esta:

grep $j $i >&- && echo -n "$SIM" || echo -n "$NAO"

ele procura $j em $i
$j é o seu valor
$i é o seu arquivo
ele vai jogar algumas informações na tela que vc não quer - no caso,
as ocorrências de $j em $i. por isso eu fecho a saida padrão deste
comando com >&-

comando && alguma coisa || outra coisa

isso significa: o comando deu certo ? se sim, faz alguma coisa, se
não, faz outra coisa.

O que significa que o comando "deu certo" ? Quando o comando realiza a
sua operação normal ele retorna um codigo de saida compativel com este
estado - que pode ser lido pela variavel $?. No caso do grep ele
retorna 0 se encontrar alguma coisa e 1 se não encontrar nada. faça o
exemplo:

grep A Arquivo_C >&-
echo $?
0

grep BArquivo_C >&-
echo $?
1

quando vc faz algo como

comando && alguma coisa || outra coisa

se o retorno da variavel $? for 0 ele executa o comando seguinte (&&
...), caso contrario vai para o (||...)

Alguem aqui pode explicar melhor, minha didática está péssima. Mas o
que eu quero dizer é que isto depende do programa. Vc pode ter um
programa bizonho que retorna 0 quando não faz o que é esperado - como
alguns erros no banco de dados. Se vc pode usar o resultado de $?
então pode fazer algo assim.

O resto  é brincar com os laços e os echos, dar uma aprumada e pensar
no que pode acrescentar.

Em 27/09/05, Tiago Barcellos Peczenyj<address@hidden> escreveu:
> Testa este cara =)
>
> Se funcionar como tu quer AVISA
>
> #!/bin/bash
> files=('Arquivo_A'  'Arquivo_B' 'Arquivo_C' )
> values=('A' 'B' 'C' 'D' 'E' 'F')
>
> SIM="     X    "
> NAO="          "
>
> echo "  ${files[@]}"
> for j in ${values[@]}
> do
> echo -n $j
> for i in ${files[@]}
> do grep $j $i >&- && echo -n "$SIM" || echo -n "$NAO"
> done
> echo ""
> done
>
>
>
> Em 27/09/05, Gentil de Bortoli Júnior<address@hidden> escreveu:
> >  -----BEGIN PGP SIGNED MESSAGE-----
> >  Hash: SHA1
> >
> >  Pessoal, minha vez de pedir uma sugestão.
> >
> >  Eu tenho aqui 3 arquivos com o seguinte formato:
> >
> >  Arquivo_A:
> >  A
> >  B
> >  C
> >  D
> >
> >  Arquivo_B:
> >  A
> >  B
> >  D
> >  E
> >
> >  Arquivo_C:
> >  A
> >  C
> >  D
> >  E
> >  F
> >
> >  Eu gostaria de gerar uma saída da seguinte forma:
> >
> >  - -------------------------------------------------------
> >        Arquivo_A      Arquivo_B      Arquivo_C
> >
> >  A      X            X            X
> >  B      X            X
> >  C      X                        X
> >  D      X            X            X
> >  E                  X            X
> >  F                              X
> >  - -------------------------------------------------------
> >
> >  Deu para entender? "A B C D E F" são todas as minhas possibilidades.
> >  Então, estou dizendo em quais arquivos cada possibilidade está presente.
> >
> >  Estou tentando resolver o problema com AWK mas hoje estou meio
> >  "efetado", sem ver o problema direito. Estou trabalhando com os
> >  arquivos isoladamente. Não sei se seria melhor colocar tudo num mesmo
> >  arquivo, com algum tipo de delimitador e então trabalhar em cima
> >  desse único arquivo.
> >
> >  Bem... Sugestões?
> >
> >  []s
> >  - --
> >  Gentil de Bortoli Júnior
> >  KeyID: 0x8383E070 - www.keyserver.net
> >  -----BEGIN PGP SIGNATURE-----
> >  Version: GnuPG v1.4.1 (GNU/Linux)
> >
> > iD8DBQFDOX70U6AHyoOD4HARAqfaAJ9NUQdTuwqaJ2E4WghaM7pdPIbe8wCcD81i
> >  tJ2H5AfIPlPEs/tkPzVCD3A=
> >  =Gka+
> >  -----END PGP SIGNATURE-----
> >
> >
> > ---------------------------------------------------------------------
> >  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
> > ---------------------------------------------------------------------
> >
> >
> >
> >
> >  Yahoo! Grupos, um serviço oferecido por:
> >
> >  ________________________________
> >  Links do Yahoo! Grupos
> >
> >
> > Para visitar o site do seu grupo na web, acesse:
> > http://br.groups.yahoo.com/group/shell-script/
> >
> > Para sair deste grupo, envie um e-mail para:
> > address@hidden
> >
> > O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> > Yahoo!.
>


reply via email to

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