Pular para o conteúdo

Script compara listas

Responder tópico
  • Denunciar
  • Indicar

1. Script compara listas

Enviado em 07/08/2008 - 12:25h

Senhores,
Tenho dois arquivos:

file1.txt:

G6987
J0013
T0001
U0489
X5830

e file2.txt:

T0001
U0489
X5830

Preciso localizar os dados do primeiro no segundo e gerar um arquivo com os não encontrados.
Alguém pode me dar uma idéia de como gerar esse script?

[]s

Responder tópico

2. Re: Script compara listas

Enviado em 07/08/2008 - 12:43h

Colega,

Da uma olhada no comando "diff" com ele você consegue comparar arquivos, expanda as opções deste comando, provavelmente ele poderá te ajudar.

Caso seja o que entendi você pode utilizar a seguinte sintaxe:

$diff -y arquivo1 arquivo2


Com isto ele vai separar por colunas utilizando como delimitador os sinais de maior e menor ( > < ).

Abraços

3. Re: Script compara listas

Enviado em 07/08/2008 - 12:46h

Tente assim:

$ cat file1.txt file2.txt | sort | uniq -u > saida.txt

$ cat saida.txt
G6987
J0013

4. Re: Script compara listas

Enviado em 07/08/2008 - 12:54h

Optaria pelo cat, mas "resolvendo" com o diff:

diff -y file1 file2 | grep "<" | awk {'print $1'}

5. Re: Script compara listas

Enviado em 07/08/2008 - 14:37h

Obrigado galera, todas as opções foram bem válidas.

[]s

6. Complicando um pouco

Enviado em 07/08/2008 - 19:25h

Se meu 1o. arquivo fosse

file1.txt:
G6987;VECTRA;2008
J0013;PASSAT;2000
T0001;UNO;2000
U0489;POINTER;1990
X5830;FIT;2002

e o segundo :
T0001
U0489
X5830

como resolveria para selecionar os registros do 1o arquivo que estao listados no arquivo 2.

Obrigado.

7. Re: Script compara listas

Enviado em 07/08/2008 - 20:33h

A maneira mais simples é:

while read LINHA
do
fgrep $LINHA file1.txt
done < file2.txt

Só que para arquivos muito longos ficaria razoavelmente lento. Se os campos tiverem o tamanho fixo, como é o caso que vc passou eu faria:

sort -r file1 file2| uniq -w 5 -d


8. O comando comm

Enviado em 08/08/2008 - 02:56h

comm -1 file1.txt file2.txt >file3.txt

9. Re: Script compara listas

Enviado em 08/08/2008 - 18:54h

Pessoal consegui o melhor resultado com o seguinte comando :

egrep -f file1 file2 > file3

10. Variedades para todos

Enviado em 09/08/2008 - 00:46h

Viva a grande variedade de opções que o GNU/Linux possui.
:)

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder