Cómo comparar dos archivos en Linux

How Compare Two Files Linux



Si desea comparar dos archivos y descifrar la diferencia, un comando llamado diff se utiliza. Esta guía se centra en proporcionarle el uso de la diff comando con varias opciones para obtener la diferencia entre dos archivos.

Entonces, ¿cómo diff comando realmente funciona? los diff El comando compara los dos archivos y genera una lista de diferencias entre ambos archivos. Más precisamente, produce una lista de modificaciones que deben realizarse en el primer archivo para que coincida con el segundo archivo. los diff Los programadores también utilizan el comando para obtener la diferencia entre dos archivos de código fuente para desarrollar parches.







Antes de sumergirse en los ejemplos, tenga en cuenta que el orden de los archivos es muy importante. Porque el diff comando da salida basada en el orden de los archivos.



Cómo usar el comando diff en Linux para comparar archivos:

La sintaxis del diff El comando se menciona a continuación:



$diff [opciones] [archivo1] [archivo2]

Primero, cree dos archivos. Estoy creando archivos de texto con el nombre de test_file_1.txt y test_file_2.txt . Estos archivos contienen contenido con una ligera diferencia:





Ahora use el siguiente comando para obtener la diferencia:



$difftest_file_1.txt test_file_2.txt

La salida estándar muestra las líneas que coinciden según el orden de los archivos mencionados en el comando. Entonces, decodifiquemos la salida:

La comparación de los archivos está etiquetada y cada etiqueta tiene un número a cada lado. El formato es el siguiente:

[Número de línea del archivo 1] [Etiqueta (a, c, d)] [Número de línea del archivo 2]

Hay tres etiquetas:

  • a - Agregar: agrega contenido en el primer archivo para sincronizarlo con el segundo archivo.
  • c - Cambiar: indica que se necesita una modificación en el contenido del primer archivo para que coincida con el segundo archivo.
  • D - Eliminar: elimina el contenido del primer archivo para que coincida con el segundo.

2d1 indica eliminar la línea número 2 del primer archivo para que coincida con el segundo archivo de la línea número 1.

Similar, 4c3 significa hacer un cambio en la cuarta línea del primer archivo para que coincida con la línea número 3 del segundo archivo, ya que ambas líneas son ligeramente diferentes.

Hay otro método para ver la diferencia, use el diff comando con el -y opción:

$diff -y -EN 60test_file_1.txt test_file_2.txt

En la salida anterior, el contenido de test_file_1.txt se muestra en el lado izquierdo, mientras que el contenido de archivo_texto_2.txt se muestra en el lado derecho. La diferencia está indicada por los símbolos:

  • | - La línea es diferente en el segundo archivo.
  • > - La línea es adicional en el segundo archivo
  • <— Line has been deleted from the second file

La -W indica el ancho entre el contenido de dos archivos. Para obtener por separado y ver la diferencia, use lo siguiente:

$diff -y -EN 60 --suppress-common-linestest_file_1.txt test_file_2.txt

Cómo obtener resultados en una línea usando el comando diff:

Si el método etiquetado es difícil de decodificar, existe un enfoque más simple. Utilizando el -q opción con la diff El comando le da salida en una línea. Bueno, sin ninguna información adicional, sin embargo:

$diff -qtest_file_1.txt test_file_2.txt

Si los archivos difieren, el comando anterior dará una salida. Si los archivos son idénticos, no habrá salida. Para demostrarlo, estoy creando una copia de test_file_1.txt utilizando:

$cptest_file_1.txt test_file_3.txt

Se creará un nuevo archivo con el nombre de test_file_3.txt que contiene el mismo contenido que test_file_1.txt tiene. Ahora usa:

$diff -qtest_file_1.txt test_file_2.txt

Dado que ambos archivos tienen un contenido similar, no habrá salida.

Cómo verificar la diferencia de archivos en el modo de contexto usando el comando diff:

Para obtener la comparación en modo de contexto, el -c La opción se utilizará con la diff mando:

$diff -ctest_file_1.txt test_file_2.txt

Analicemos el resultado.

Para mantener la diferencia, el primer archivo se indica con *** junto con la fecha y hora de creación, mientras que el segundo archivo se indica con -.

La siguiente línea significa un rango de líneas consideradas durante la comparación. Para el primer archivo, es ***1,6**** y para el segundo archivo, es —1,5—- :

La diferencia está indicada por los símbolos:

  • +: La línea no está presente en el primer archivo. Insértelo en el primer archivo o elimínelo del segundo archivo para que coincida con ambos archivos.
  • -: La línea existe en el primer archivo pero no en el segundo archivo. Intente insertarlo en el segundo archivo o elimínelo del primero para que coincida con ambos archivos.
  • ! : La línea necesita modificaciones para que coincida.

Cómo verificar la diferencia de archivos en modo unificado usando el comando diff:

El modo unificado es bastante similar al modo de contexto pero sin información redundante. La bandera que usamos es -u :

$diff -utest_file_1.txt test_file_2.txt

En la salida, el primer archivo se indica con - y el segundo con +++. La segunda línea muestra el número de líneas consideradas para la comparación en ambos archivos, luego el contenido a eliminar, agregar o modificar con los símbolos que los acompañan. No habrá ningún símbolo con líneas similares en ambos archivos.

Cómo ignorar la distinción entre mayúsculas y minúsculas mientras se usa el comando diff:

Si desea comparar los archivos sin tener en cuenta la distinción entre mayúsculas y minúsculas, utilice la -I bandera:

$diff -Itest_file_1.txt test_file_2.txt

Para demostración, he hecho el D de Profundo en el primer archivo pequeño:

Como se ve en el primer comando, se indica la diferencia; durante el uso -I esa diferencia ha sido eliminada.

Algunas otras opciones útiles del diff comando se enumeran a continuación:

Opción Descripción
-a Esta opción trata todos los archivos como archivos de texto.
-B Ignora la modificación donde las líneas están todas en blanco
-Y Esta opción ignora la expansión de pestañas
-I Ignora los cambios donde coinciden todas las líneas
-s Da salida cuando dos archivos son idénticos
-en Ignora todos los espacios en blanco
-CON Ignora los espacios en blanco al final de la línea

Cómo usar Vim Editor para comparar dos archivos:

Otro método para comparar dos archivos es usar el vimdiff mando. Para eso, necesita tener vim instalado:

$sudoaptoInstalar en pc yo vine

Ahora, para comparar dos archivos, use:

$vimdiff test_file_1.txt test_file_2.txt

Ambos archivos se abrirán uno al lado del otro. La parte que no coincide se resaltará:

Cómo comparar dos archivos usando colordiff:

Otro enfoque es una especie de extensión del diff mando. Puede hacer que la comparación sea más identificable agregándole colores. Para instalar use:

$sudoaptoInstalar en pccolordiff

Para comparar archivos, use:

$colordiff test_file_1.txt test_file_2.txt

Puedes reemplazar diff con colordiff para obtener la salida estándar del diff comando en formato de color.

Conclusión:

Para comparar archivos en Linux e incluso en macOS, una utilidad utilizada se llama diff. La utilidad diff compara dos archivos y proporciona información sobre las diferencias entre los dos archivos. Los desarrolladores utilizan principalmente el comando diff para crear archivos de parche.

En esta guía, discutimos a fondo los diff comando y cómo usarlo para comparar dos archivos con diferentes opciones. También aprendimos a usar colordiff para que las diferencias de archivo sean más reconocibles. Pero si encuentra que la utilidad basada en terminal es difícil de usar, también existen algunas herramientas basadas en GUI, como Kompare, DiffMerge, Meld - Diff Tool y Diffuse - GUI Giff Tool.