Como comparar dois arquivos no Linux

How Compare Two Files Linux



Se você quiser comparar dois arquivos e decifrar a diferença, um comando chamado diferença é usado. Este guia se concentra em fornecer a você o uso do diferença comando com várias opções para obter a diferença entre dois arquivos.

Então, como o diferença comando realmente funciona? o diferença comando compara os dois arquivos e produz uma lista de diferenças entre os dois arquivos. Mais precisamente, ele produz uma lista de modificações que devem ser feitas no primeiro arquivo para corresponder ao segundo arquivo. o diferença comando também é usado pelos programadores para obter a diferença entre dois arquivos de código-fonte para desenvolver patches.







Antes de mergulhar nos exemplos, observe que a ordem dos arquivos é muito importante. Porque o diferença comando fornece saída com base na ordem dos arquivos.



Como usar o comando diff no Linux para comparar arquivos:

A sintaxe do diferença comando é mencionado abaixo:



$diferença [opções] [arquivo1] [arquivo2]

Primeiro, crie dois arquivos. Estou criando arquivos de texto com o nome de test_file_1.txt e test_file_2.txt . Esses arquivos contêm conteúdo com uma pequena diferença:





Agora use o seguinte comando para obter a diferença:



$diferençatest_file_1.txt test_file_2.txt

A saída padrão exibiu as linhas que correspondem de acordo com a ordem dos arquivos mencionados no comando. Então, vamos decodificar a saída:

A comparação dos arquivos é rotulada e cada rótulo possui um número em cada lado. O formato é o seguinte:

[Número da linha do arquivo 1] [Rótulo (a, c, d)] [Número da linha do arquivo 2]

Existem três rótulos:

  • para - Adicionar: adiciona conteúdo no primeiro arquivo para sincronizar com o segundo arquivo.
  • c - Alterar: indica que uma modificação necessária no conteúdo do primeiro arquivo para coincidir com o segundo arquivo.
  • d - Excluir: remove o conteúdo do primeiro arquivo para combinar com o segundo.

2d1 indica a exclusão da linha número 2 do primeiro arquivo para corresponder ao segundo arquivo da linha número 1.

De forma similar, 4c3 significa fazer uma mudança na quarta linha do primeiro arquivo para coincidir com a linha número 3 do segundo arquivo, pois ambas as linhas são ligeiramente diferentes.

Existe outro método para ver a diferença, use o diferença comando com o -e opção:

$diferença -e -NO 60test_file_1.txt test_file_2.txt

Na saída acima, o conteúdo de test_file_1.txt é exibido no lado esquerdo, enquanto o conteúdo de text_file_2.txt é exibido no lado direito. A diferença é indicada pelos símbolos:

  • | - A linha é diferente no segundo arquivo
  • > - A linha é adicional no segundo arquivo
  • <— Line has been deleted from the second file

O -W indica a largura entre o conteúdo de dois arquivos. Para obter separadamente e ver a diferença, use o seguinte:

$diferença -e -NO 60 --suppress-common-linestest_file_1.txt test_file_2.txt

Como obter saída em uma linha usando o comando diff:

Se o método rotulado for difícil de decodificar, existe uma abordagem mais simples. Usando o -q opção com o diferença comando fornece a saída em uma linha. Bem, sem nenhuma informação adicional:

$diferença -qtest_file_1.txt test_file_2.txt

Se os arquivos forem diferentes, o comando acima fornecerá uma saída. Se os arquivos forem idênticos, não haverá saída. Para demonstrar isso, estou criando uma cópia do test_file_1.txt usando:

$cptest_file_1.txt test_file_3.txt

Um novo arquivo será criado com o nome de test_file_3.txt contendo o mesmo conteúdo que test_file_1.txt tem. Agora usa:

$diferença -qtest_file_1.txt test_file_2.txt

Como ambos os arquivos têm conteúdo semelhante, portanto, não haveria saída.

Como verificar a diferença de arquivos no modo de contexto usando o comando diff:

Para obter a comparação no modo de contexto, o -c opção será usada com o diferença comando:

$diferença -ctest_file_1.txt test_file_2.txt

Vamos dissecar a saída.

Para manter a diferença, o primeiro arquivo é indicado por *** junto com a data e hora da criação, enquanto o segundo arquivo é indicado por -.

A próxima linha significa um intervalo de linhas consideradas durante a comparação. Para o primeiro arquivo, é *** 1,6 **** e para o segundo arquivo, é —1,5—- :

A diferença é indicada pelos símbolos:

  • +: A linha não está presente no primeiro arquivo. Insira-o no primeiro arquivo ou remova-o do segundo arquivo para corresponder aos dois arquivos.
  • -: A linha existe no primeiro arquivo, mas não no segundo arquivo. Tente inseri-lo no segundo arquivo ou removê-lo do primeiro para coincidir com os dois arquivos.
  • ! : A linha precisa de modificação para corresponder.

Como verificar a diferença de arquivos no modo unificado usando o comando diff:

O modo unificado é bastante semelhante ao modo de contexto, mas sem informações redundantes. A bandeira que usamos é -você :

$diferença -vocêtest_file_1.txt test_file_2.txt

Na saída, o primeiro arquivo é indicado por - e o segundo por +++. A segunda linha mostra o número de linhas consideradas para comparação em ambos os arquivos, depois o conteúdo a ser excluído, adicionado ou modificado com os símbolos com eles. Não haverá nenhum símbolo com linhas semelhantes em ambos os arquivos.

Como ignorar a diferenciação de maiúsculas e minúsculas ao usar o comando diff:

Se você quiser comparar os arquivos ignorando a distinção entre maiúsculas e minúsculas, use o -eu bandeira:

$diferença -eutest_file_1.txt test_file_2.txt

Para demonstração, fiz o D do Deepin no primeiro arquivo pequeno:

Como visto no primeiro comando, a diferença é indicada; Enquanto estiver usando -eu essa diferença foi removida.

Algumas outras opções úteis do diferença comandos estão listados abaixo:

Opção Descrição
-para Esta opção trata todos os arquivos como arquivos de texto
-B Ele ignora a modificação onde as linhas estão todas em branco
-E Esta opção ignora a expansão da guia
-EU Ele ignora as mudanças onde todas as linhas correspondem
-s Dá saída quando dois arquivos são idênticos
-no Ignora todos os espaços em branco
-COM Ele ignora o espaço em branco no final da linha

Como usar o Vim Editor para comparar dois arquivos:

Outro método para comparar dois arquivos é usar o vimdiff comando. Para isso, você precisa ter o vim instalado:

$sudoaptoinstalar vim

Agora, para comparar dois arquivos, use:

$vimdiff test_file_1.txt test_file_2.txt

Ambos os arquivos serão abertos lado a lado. A parte que não corresponder será destacada:

Como comparar dois arquivos usando colordiff:

Outra abordagem é uma espécie de extensão do diferença comando. Você pode tornar a comparação mais identificável adicionando cores a ela. Para instalar, use:

$sudoaptoinstalarColordiff

Para comparar arquivos, use:

$colordiff test_file_1.txt test_file_2.txt

Você pode substituir diferença com Colordiff para obter a saída padrão do diferença comando em formato colorido.

Conclusão:

Para comparar arquivos no Linux e até no macOS, um utilitário usado é chamado de diff. O utilitário diff compara dois arquivos e fornece informações sobre as diferenças entre os dois arquivos. Os desenvolvedores usam principalmente o comando diff para criar arquivos de patch.

Neste guia, discutimos exaustivamente o diferença comando e como usá-lo para comparar dois arquivos com opções diferentes. Também aprendemos como usar Colordiff para tornar as diferenças do arquivo mais reconhecíveis. Mas se você achar que o utilitário baseado em terminal é difícil de usar, existem algumas ferramentas baseadas em GUI também, como Kompare, DiffMerge, Meld - Diff Tool e Diffuse - GUI Giff Tool.