Script compara listas

1. Script compara listas

Ewerton Gonçalves de Lara
toncap

(usa KUbuntu)

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


  


2. Re: Script compara listas

Perfil removido
removido

(usa Nenhuma)

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

Sandro Marcell
SMarcell

(usa Slackware)

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

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

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

Ewerton Gonçalves de Lara
toncap

(usa KUbuntu)

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

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

[]s


6. Complicando um pouco

Mario Oshiro
mario oshiro

(usa Suse)

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

Denis Doria
thuck

(usa Debian)

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

Perfil removido
removido

(usa Nenhuma)

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

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


9. Re: Script compara listas

Mario Oshiro
mario oshiro

(usa Suse)

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

Perfil removido
removido

(usa Nenhuma)

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

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts