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

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

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


From: Leslie Watter
Subject: Re: [shell-script] Filtrar e comparar campos de arquivos distintos
Date: Mon, 27 May 2013 15:32:07 -0300

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 <address@hidden>

> **
>
>
> 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 <address@hidden> 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]



reply via email to

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