Esta guía le mostrará cómo usar Linux para comparar dos archivos y dar salida a su diferencia en la pantalla o en un archivo.
No necesita instalar ningún software especial para comparar archivos usando Linux, pero sí necesita saber cómo abrir una ventana de terminal.
Como muestra la guía enlazada, hay muchas maneras de abrir una ventana de terminal usando Linux. Lo más sencillo es pulsar las teclas CTRL, ALT y T al mismo tiempo.
Índice de contenidos
Creación de los archivos para comparar
Para seguir con esta guía, cree un archivo llamado «file1» e introduzca el siguiente texto:
pre>10 botellas verdes paradas en una pared
Si una botella verde cayera accidentalmente
Habría 9 botellas verdes paradas en la pared
.
Puede crear un fichero siguiendo estas instrucciones:
-
Abra el archivo escribiendo el siguiente comando: nano file1
-
Escriba 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 introduzca el siguiente texto:
10 botellas verdes paradas en una pared
Si 1 botella verde cayera accidentalmenteHabría 9 botellas verdes paradas en la pared.
Puede crear un fichero siguiendo estas instrucciones:
Abra el archivo escribiendo el siguiente comando: nano file2
Escriba 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 diff command.
La forma más simple del comando diff es la siguiente:
diff file1 file2Si los archivos son los mismos, entonces no habrá salida cuando se utilice este comando, sin embargo, como hay diferencias, verá una salida similar a la siguiente:
Si una botella verde cayera accidentalmente en la pared
< Si una botella verde cayera accidentalmente< Habría 9 botellas verdes paradas en la pared...> Si una botella verde cayera accidentalmente> Si una botella verde cayera accidentalmente> Habría 9 botellas verdes paradas en la paredInicialmente, el resultado puede parecer confuso, pero una vez que se entiende la terminología es bastante lógico.
Usando sus propios ojos puede ver que las diferencias entre los dos archivos son las siguientes:
- El segundo archivo sólo tiene tres líneas, mientras que el primero tiene 4.
- El segundo archivo dice "1 botella verde" en la tercera línea, mientras que el primero dice "una botella verde" .
- El segundo archivo dice "there'd" en lugar de "there would" 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.
A continuación, enumera las líneas del 2 al 4 del primer archivo, seguidas de las 2 líneas diferentes del segundo archivo.
Cómo mostrar si los archivos son diferentes
Si sólo quieres saber si los archivos son diferentes y no te interesan las líneas que son diferentes, puedes ejecutar el siguiente comando:
diff -q archivo1 archivo2
Si los archivos son diferentes, se mostrará lo siguiente:
Ficheros fichero1 y fichero2 difieren
Si los archivos son los mismos, no se muestra nada.
Cómo mostrar un mensaje si los archivos son los mismos
Cuando ejecuta un comando, quiere saber si ha funcionado correctamente, por lo que quiere 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 utilizar el siguiente comando:.
diff -s file1 file2
Ahora, si los archivos son los mismos, recibirá el siguiente mensaje:
Ficheros file1 y file2 son idénticos
Cómo producir las diferencias lado a lado
Si hay muchas diferencias, entonces puede llegar a ser muy rápidamente confuso en cuanto a cuáles son las diferencias entre los dos archivos.
Puede cambiar la salida del comando diff para que los resultados se muestren uno al lado del otro. Para ello ejecute el siguiente comando:
diff -y file1 file2
La salida para el archivo usa el símbolo | para mostrar una diferencia entre las dos líneas, a < para mostrar una línea que ha sido eliminada y a> para mostrar una línea que ha sido añadida.
Es interesante que si ejecuta el comando usando 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 si hubiera sido eliminada.
Restricción de los anchos de columna
Cuando se comparan dos archivos uno al lado del otro puede ser difícil de leer si los archivos tienen muchas columnas de texto.
Para restringir un número de columnas, utilice el siguiente comando:
diff --width=5 file file2
Cómo ignorar las diferencias de casos 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, entonces puede usar el siguiente comando:
diff -i file1 file2
Cómo ignorar el espacio en blanco que sigue al final de una línea
Si al comparar los archivos notas que hay un montón de diferencias y las diferencias son causadas por el espacio en blanco al final de las líneas, puedes omitirlas como si fueran cambios ejecutando el siguiente comando:
diff -Z archivo1 archivo2
Cómo ignorar todas las diferencias de espacio en blanco entre dos archivos
Si sólo estás interesado en el texto de un archivo y no te importa si hay más espacios en uno que en el otro, puedes usar el siguiente comando:
diff -w archivo1 archivo2
Cómo ignorar las líneas en blanco al comparar dos archivos
Si no le importa que un archivo pueda tener líneas en blanco adicionales, puede comparar los archivos usando el siguiente comando:
diff -B archivo1 archivo2
Resumen
Puede encontrar más información leyendo el manual del comando diff.
man diff
El comando diff puede usarse en su forma más simple para mostrarle las diferencias entre 2 archivos, pero también puede usarse para crear un archivo diff como parte de una estrategia de parcheo, como se muestra en esta guía del comando de parcheo 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.