Encontre duplicatas em dois arquivos [duplicados]

0

Eu preciso criar um script que leia linhas de um arquivo e verifique se essa linha existe no segundo arquivo. Como lidar com caracteres especiais em arquivos como: ', "e \?

Primeiro arquivo:

a.txt
aa
bb
cc
f
'f'
"g"
'h'

Segundo arquivo:

b.txt
cc
dd
'f'
"g"
g
h

Comando:

cat a.txt | xargs -I{} grep -w {} b.txt

Retorno:

cc
'f'
'f'
"g"
g  <- it shouldn't be there
h  <- it shouldn't be there

Esperado:

cc
'f'
"g"

No meu caso, o último item (h) não deve ser listado porque este item não existe em um arquivo.txt. Existe apenas 'h' (aspas simples). Como posso lidar com isso de maneira universal para evitar situações inesperadas no futuro?

    
por dePablo 01.12.2017 / 13:48

1 resposta

1

É para isso que serve o utilitário comm . Geralmente, você pode fazer este one-liner para classificar os arquivos de entrada e alimentá-los para comm . As opções -12 significam suprimir as linhas exclusivas dos arquivos 1 e 2, mostrando apenas as linhas comuns.

comm -12 <(sort a.txt) <(sort b.txt)

cc
'f'
"g"
    
por 01.12.2017 / 17:25