Como comparar dous arquivos de texto usando Linux

Esta guía mostraralle como usar Linux para comparar dous arquivos e saír a súa diferenza á pantalla ou a un ficheiro.

Non necesita instalar ningún software especial para comparar ficheiros con Linux, pero necesitará saber como abrir unha xanela de terminal .

Como mostra a guía relacionada hai moitas maneiras de abrir unha ventá de terminal usando Linux. O máis simple é premer as teclas CTRL, ALT e T ao mesmo tempo.

Creación de ficheiros para comparar

Para seguir xunto con esta guía, cree un ficheiro chamado "file1" e introduza o seguinte texto:

10 botellas verdes de pé nunha parede

10 botellas verdes de pé nunha parede

Se unha botella verde caería accidentalmente

Habería 9 botellas verdes situadas na parede

Pode crear un ficheiro seguindo estas instrucións:

  1. Abra o ficheiro escribindo o seguinte comando: nano file1
  2. Escribe o texto no editor de nano
  3. Prema CTRL e O para gardar o ficheiro
  4. Preme CTRL e X para saír do ficheiro

Agora cree outro ficheiro chamado "file2" e escriba o seguinte texto:

10 botellas verdes de pé nunha parede

Se caia de forma accidental unha botella verde

Habería 9 botellas verdes situadas na parede

Pode crear un ficheiro seguindo estas instrucións:

  1. Abra o ficheiro escribindo o seguinte comando: nano file2
  2. Escribe o texto no editor de nano
  3. Prema CTRL e O para gardar o ficheiro
  4. Preme CTRL e X para saír do ficheiro

Como comparar dous ficheiros usando Linux

O comando usado en Linux para mostrar as diferenzas entre dous arquivos chámase o comando diff.

A forma máis sinxela do comando diff é a seguinte:

ficheiro diff file1

Se os ficheiros son os mesmos, non haberá saída ao usar este comando, con todo, xa que hai diferenzas, verá saída similar á seguinte:

2,4c2,3

<10 botellas verdes de pé na parede

Había 9 botellas verdes situadas na parede

...

> Se caia de forma accidental unha botella verde

> Habería 9 botellas verdes situadas na parede

Inicialmente, a saída pode parecer confusa pero unha vez que comprende a terminoloxía é bastante lóxico.

Usando os seus propios ollos pode ver que as diferenzas entre os dous arquivos son as seguintes:

A saída do comando diff mostra que entre as liñas 2 e 4 do primeiro ficheiro e as liñas 2 e 3 do segundo ficheiro hai diferenzas.

A continuación, enumera as liñas de 2 a 4 do primeiro ficheiro seguido das dúas liñas distintas do segundo ficheiro.

Como mostrar só se os ficheiros son diferentes

Se só desexa saber se os ficheiros son diferentes e non está interesado en que liñas son diferentes pode executar o seguinte comando:

ficheiro diff -q file1

Se os ficheiros son diferentes, amosarase o seguinte:

Os ficheiros file1 e file2 difiren

Se os ficheiros son os mesmos, non se mostrará nada.

Como amosar unha mensaxe se os ficheiros son iguais

Cando executar un comando que quere saber que funcionou correctamente, quere que se amose unha mensaxe cando execute o comando diff independentemente de se os ficheiros son iguais ou diferentes

Para acadar este requisito usando o comando diff, pode usar o seguinte comando :.

ficheiro diff -s file1

Agora, se os ficheiros son os mesmos, recibirá a seguinte mensaxe:

Os ficheiros file1 e file2 son idénticos

Como producir as diferenzas lado a lado

Se hai moitas diferenzas, pode converterse rapidamente en confuso en canto ás diferenzas entre os dous arquivos.

Pode cambiar a saída do comando diff para que os resultados se mostren un ao outro lado. Para facelo executar o seguinte comando:

diff -y file1 file2

A saída para o ficheiro usa símbolo para mostrar a diferenza entre as dúas liñas, a para mostrar unha liña que se engadiu.

Curiosamente, se executar o comando usando os nosos ficheiros de demostración, todas as liñas mostraranse como diferentes, excepto para a última liña de arquivo 2 que se mostrará como eliminada.

Restrinxindo os anchos de columna

Ao comparar dous ficheiros ao carón, pode ser difícil de ler se os ficheiros teñen moitas columnas de texto.

Para restrinxir varias columnas, use o seguinte comando:

dif - width = 5 file file2

Como ignorar diferenzas de casos ao comparar ficheiros

Se desexa comparar dous ficheiros pero non lle importa se o caso das letras é o mesmo entre os dous ficheiros, entón pode usar o seguinte comando:

ficheiro diff -i file1

Como ignorar o espazo branco rematado ao final dunha liña

Se ao comparar os ficheiros notas un gran número de diferenzas e as diferenzas son causadas polo espazo en branco ao final das liñas pode omitir estas como se amosan como cambios executando o seguinte comando:

dif -Z file1 file2

Como ignorar todas as diferenzas espaciais brancas entre dous ficheiros

Se só estás interesado no texto dun arquivo e non me importa se hai máis espazos nun que outro pode usar o seguinte comando:

arquivo diff -w file2

Como ignorar as liñas en branco ao comparar dous ficheiros

Se non lle importa que un ficheiro poida ter liñas en branco extra nel, entón pode comparar os ficheiros empregando o seguinte comando:

dif -B file1 file2

Resumo

Podes atopar máis información lendo o manual para o comando diff.

man dif

O comando diff pode usarse na súa forma máis sinxela para mostrar só as diferenzas entre dous ficheiros, pero tamén pode usalo para crear un ficheiro de diferencias como parte dunha estratexia de parche como se mostra nesta guía para o comando de parche de Linux .

Outro comando que pode usar para comparar ficheiros é o comando CMP como se mostra nesta guía . Isto compara os ficheiros byte by byte.