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

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

Re: [shell-script] Re: Filtrar e comparar campos de arquivos distintos


From: Alfredo Casanova
Subject: Re: [shell-script] Re: Filtrar e comparar campos de arquivos distintos
Date: Mon, 27 May 2013 17:55:18 -0300

Ainda dá pra eliminar um pipe fazendo:

sed -e '1d' /tmp/ca.txt |
while read cadastro; do


2013/5/27 nerobarrabas <address@hidden>

> **
>
>
> Leslie,
>
> Perfeito!
> Era exatamente isso que precisava.
> E como sou aluno aplicado, já fiz a lição de casa.
> Ficou assim:
>
> cat /tmp/ca.txt | sed -e '1d' |
> while read cadastro; do
> blá blá blá
>
> Valeu!!
> Grato a todos que ajudaram.
>
> Diramos
>
> --- Em address@hidden, Leslie Watter <watter@...>
> escreveu
>
> >
> > Oi,
> >
> > Eu fiz algo macarrônico, mas que funciona segundo os arquivos que vc
> mandou.
> >
> >
> > $ cat /tmp/ca.txt | while read cadastro; do cidade=$(echo $cadastro | cut
> > -d \; -f 3 ); RES=$(grep -c "$cidade" /tmp/ci.txt); if [ "$RES" == "0" ];
> > then echo $cadastro; fi ; done
> >
> >
> > nome;sobrenome;cidade
> > marcos;nogueira;belo horizonte
> > paulo;nogueira;campo grande
> >
> > Explicando:
> >
> > cat /tmp/ca.txt |
> > while read cadastro; do
> > cidade=$(echo $cadastro | cut -d \; -f 3 );
> > RES=$(grep -c "$cidade" /tmp/ci.txt);
> > if [ "$RES" == "0" ]; then
> > echo $cadastro;
> > fi ;
> > done
> >
> >
> > /tmp/ca.txt -- cadastro
> > /tmp/ci.txt -- cidades
> >
> > o cat manda pro while ler linha a linha o cadastro.
> > cidade recebe a cidade corrente (não me preocupei em tirar a 1a linha,
> fica
> > pra vc)
> > RES recebe o resultado da quantidade de ocorrências da cidade no arquivo
> de
> > cidades
> > se RES = 0 mostre a linha do cadastro
> > fim :D
> >
> > tirar a 1a linha fica de lição de casa pra vc, tem tantas maneiras de
> fazer
> > isso que nem um sed 1,d seria exagero ...
> >
> >
> > []s
> >
> > LEslie
> >
> >
> >
> >
> > 2013/5/27 Alysson Gonçalves de Azevedo <agalysson@...>
>
> >
> > > **
> > >
> > >
> > > No site http://linuxdicas.wikispaces.com/grep tem um exemplo assim:
> > >
> > > listar linhas do arquivo 1 que não estão no arquivo 2
> > > > grep -Fxv -f file1 file2
> > > >
> > >
> > > Então acredito que se você tentar grep -Fxv -f cadastro.txt cidade.txt
> vai
> > > resolver parte do problema, só não dou certeza porque não tenho como
> testar
> > > aqui. Depois é só tirar a primeira linha.
> > >
> > > Alysson Gonçalves de Azevedo - (11) 984 917 730
> > >
> > > "Anarcho-syndicalism is a way of preserving freedom." - Monty Python
> > >
> > > Em 27 de maio de 2013 15:00, nerobarrabas <diramos@...> escreveu:
>
> > >
> > > > **
> > >
> > > >
> > > >
> > > > Pessoal,
> > > >
> > > > Continuando com meu problema:
> > > > Tenho 02 arquivos, com campos separados por ";", com o seguinte
> conteúdo:
> > > >
> > > > cadastro.txt
> > > >
> > > > nome;sobrenome;cidade
> > > > joao;silva;brasilia
> > > > carlos;souza;salvador
> > > > chico;pereira;sao paulo
> > > > marcos;nogueira;belo horizonte
> > > > paulo;nogueira;campo grande
> > > >
> > > > cidade.txt
> > > >
> > > > brasilia
> > > > salvador
> > > > sao paulo
> > > >
> > > > Estou tentando fazer um script que funcione assim:
> > > >
> > > > Leia cada linha do arquivo cadastro.txt (a partir da segunda linha)
> e a
> > > > compare com o
> > > > arquivo "cidade.txt", retornando todas as linhas (completas) do
> > > > "cadastro.txt"
> > > > cuja 3ª coluna não conste do arquivo cidade.txt.
> > > > Então, o meu retorno, para o caso acima, teria que ser o seguinte:
> > > >
> > > > marcos;nogueira;belo horizonte
> > > > paulo;nogueira;campo grande
> > > >
> > > > Tentei grep -Fxv -f cidade.txt cadastro.txt mas o retorno não foi o
> > > > esperado.
> > > >
> > > > Poderiam ajudar?
> > > >
> > > > Grato.
> > > >
> > > >
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> >
> > --
> > Leslie H. Watter
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>



-- 
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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