Encontre e remova itens duplicados em dois arquivos

2

Eu tenho um arquivo de 30.000 códigos de barras Arquivo1, por exemplo

A6KAIIYY
A6KFNRGY
X6LPXV55
X6LQ5217

Eu preciso ler o arquivo1 e, em seguida, procurar por cada código de barras em outro arquivo de 35.000 códigos de barras (arquivo2) e apague a linha se a encontrar. Existe uma maneira que eu possa shell script isso?

    
por Mark 03.01.2018 / 15:01

2 respostas

3

Solução

grep + mv :

grep -vf file1 file2 > /tmp/f2_tmp && mv /tmp/f2_tmp file2
  • -v - selecione linhas não correspondentes
  • -f FILE - obtém padrões de FILE
  • /tmp/f2_tmp - arquivo temporário
por 03.01.2018 / 15:10
0

Se todos os códigos de barras no arquivo1 estiverem no arquivo2, concatene os dois arquivos, classifique e use uniq -u para imprimir somente linhas exclusivas (aquelas no arquivo2 que não estavam no arquivo1):

cat file file2 | sort | uniq -u

Caso contrário, classifique cada arquivo e use diff file1 file2 , o código de barras somente no arquivo1 será prefixado com '<' e aqueles apenas no arquivo2 com '>':

diff file1 file2 | grep -e '^> ' | sed 's/^> //'
    
por 03.01.2018 / 15:13

Tags