[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!.
>