Esta guía le mostrará cómo usar Linux para comparar dos archivos y mostrar su diferencia en la pantalla o en un archivo.
No necesita instalar ningún software especial para comparar archivos con Linux, pero sí necesita saber cómo abrir una ventana de terminal.
Como muestra la guía vinculada, hay muchas formas de abrir una ventana de terminal usando Linux. Lo más sencillo es presionar las teclas CTRL, ALT y T al mismo tiempo.
Creando los archivos para comparar
Para seguir esta guía, cree un archivo llamado "file1" e ingrese el siguiente texto:
10 botellas verdes de pie en una pared
10 botellas verdes de pie en una pared
Si una botella verde cae accidentalmente
Habría 9 botellas verdes de pie en la pared.
Puedes crear un archivo siguiendo estas instrucciones:
-
Abra el archivo escribiendo el siguiente comando: nano file1
-
Escribe el texto en el editor nano
-
Presione CTRL y O para guardar el archivo
-
Presione CTRL y X para salir del archivo
Ahora cree otro archivo llamado "file2" e ingrese el siguiente texto:
10 botellas verdes de pie en una pared
Si 1 botella verde cae accidentalmente
Habría 9 botellas verdes de pie en la pared
Puedes crear un archivo siguiendo estas instrucciones:
-
Abra el archivo escribiendo el siguiente comando: nano file2
-
Escribe el texto en el editor nano
-
Presione CTRL y O para guardar el archivo
-
Presione CTRL y X para salir del archivo
Cómo comparar dos archivos usando Linux
El comando utilizado en Linux para mostrar las diferencias entre 2 archivos se llama el comando diff.
La forma más simple del comando diff es la siguiente:
diff file1 file2
Sin embargo, si los archivos son iguales, entonces no habrá salida cuando se use este comando, ya que hay diferencias, verá una salida similar a la siguiente:
2,4c2,3
<10 botellas verdes de pie en la pared
<Si una botella verde cae accidentalmente
<Habría 9 botellas verdes de pie en la pared
…
> Si 1 botella verde cae accidentalmente
> Habría 9 botellas verdes de pie en la pared
Inicialmente, la salida puede parecer confusa, pero una vez que entiendes la terminología es bastante lógico.
Usando sus propios ojos, puede ver que las diferencias entre los 2 archivos son las siguientes:
- El segundo archivo solo tiene tres líneas, mientras que el primer archivo tiene 4.
- El segundo archivo dice "1 botella verde" en la tercera línea mientras que el primer archivo dice "una botella verde"
- El segundo archivo dice "hay" en lugar de "no" en la línea final
La salida del comando diff muestra que entre las líneas 2 y 4 del primer archivo y las líneas 2 y 3 del segundo archivo hay diferencias.
Luego, enumera las líneas del 2 al 4 del primer archivo, seguidas de las 2 líneas diferentes del segundo archivo.
Cómo mostrar solo si los archivos son diferentes
Si solo quiere saber si los archivos son diferentes y no está interesado en qué líneas son diferentes, puede ejecutar el siguiente comando:
diff -q archivo1 archivo2
Si los archivos son diferentes, se mostrará lo siguiente:
Los archivos file1 y file2 difieren
Si los archivos son los mismos, no se muestra nada.
Cómo mostrar un mensaje si los archivos son iguales
Cuando ejecuta un comando, quiere saber que ha funcionado correctamente, por lo que desea que se muestre un mensaje cuando ejecute el comando diff independientemente de si los archivos son iguales o diferentes.
Para lograr este requisito utilizando el comando diff, puede usar el siguiente comando :.
diff -s archivo1 archivo2
Ahora, si los archivos son los mismos, recibirá el siguiente mensaje:
Los archivos file1 y file2 son idénticos
Cómo producir las diferencias lado a lado
Si hay muchas diferencias, entonces puede confundirse rápidamente en cuanto a cuáles son realmente las diferencias entre los dos archivos.
Puede cambiar la salida del comando diff para que los resultados se muestren lado a lado. Para hacer esto ejecuta el siguiente comando:
diff -y file1 file2
La salida para el archivo utiliza el | símbolo para mostrar una diferencia entre las dos líneas, una <para mostrar una línea que se ha eliminado y una> para mostrar una línea que se ha agregado.
Es interesante que si ejecuta el comando utilizando nuestros archivos de demostración, todas las líneas se mostrarán como diferentes, excepto la última línea del archivo 2, que se mostrará como eliminada.
Restricción de los anchos de columna
Cuando se comparan dos archivos lado a lado, puede ser difícil de leer si los archivos tienen muchas columnas de texto.
Para restringir un número de columnas use el siguiente comando:
diff --width = 5 archivo file2
Cómo ignorar las diferencias de caso al comparar archivos
Si desea comparar dos archivos pero no le importa si el caso de las letras es el mismo entre los dos archivos, puede usar el siguiente comando:
Cómo ignorar el espacio en blanco al final de una línea
Si al comparar los archivos se nota una gran cantidad de diferencias y las diferencias son causadas por espacios en blanco al final de las líneas, puede omitirlas y aparecer como cambios al ejecutar el siguiente comando:
Cómo ignorar todas las diferencias de espacio en blanco entre dos archivos
Si solo está interesado en el texto de un archivo y no le importa si hay más espacios en uno que en el otro, puede usar el siguiente comando:
Cómo ignorar líneas en blanco al comparar dos archivos
Si no le importa que un archivo tenga más líneas en blanco, puede comparar los archivos con el siguiente comando:
Resumen
Puede encontrar más información leyendo el manual del comando diff.
hombre dif
El comando diff se puede usar en su forma más simple para mostrar las diferencias entre 2 archivos, pero también se puede usar para crear un archivo diff como parte de una estrategia de parcheo como se muestra en esta guía del comando patch de Linux.
Otro comando que puede usar para comparar archivos es el comando cmp como se muestra en esta guía. Esto compara los archivos byte por byte.