Compare dois arquivos e imprima as diferenças

2

Eu estou ciente de diff e usando loops, mas eu simplesmente não consigo realmente obter o que preciso com diff. Eu estou basicamente olhando para comparar dois arquivos (file2.txt e file2.txt) e é só pegar a saída do que está faltando entre eles.

Objetivo 1: Encontre o que está faltando no arquivo2.txt do arquivo1.txt

Objetivo 2: encontrar o que está faltando em qualquer arquivo. Algumas linhas podem existir no arquivo2.txt que não estão no arquivo1.txt. Eu gostaria de saber sobre eles também.

diff apenas me diz que os dois arquivos não são iguais, indo linha por linha, comparando as diferenças. O que eu preciso é de um programa que passe pelo arquivo e não discrimine por linhas. Se uma linha contendo '/ bin / mount' for encontrada na linha 2 do arquivo1.txt e for encontrada na linha 59 do arquivo2.txt, então eu não preciso saber disso. Eu só quero saber o que não está lá como um todo. Isso pode ser feito?

    
por unixpipe 31.08.2014 / 21:20

2 respostas

5

Se você não se importa com a ordem da linha, classifique os arquivos primeiro. Para ver quais linhas estão faltando em qual arquivo, use comm em vez de diff :

comm <(sort file1) <(sort file2)
    
por 31.08.2014 / 21:30
3

Objective 1: Find what is missing in file2.txt from file1.txt

com grep :

grep -xvFf file2.txt file1.txt

com comm :

comm -13 <(sort file1.txt) <(sort file2.txt)

Com sort e uniq :

sort file2.txt file2.txt file1.txt | uniq -u

Objective 2: Find what is missing in either file. Some lines may exist in file2.txt that arent in file1.txt. I'd like to know about them as well.

com grep :

grep -xvFf file1.txt file2.txt; grep -xvFf file2.txt file1.txt

com comm :

comm -3 <(sort file1.txt) <(sort file2.txt) | tr -d '\t'

Com sort e uniq :

sort file1.txt file2.txt | uniq -u
    
por 31.08.2014 / 21:41