Cómo comparar dos archivos de texto usando Linux

Cómo comparar dos archivos de texto usando Linux

Cómo comparar dos archivos de texto usando Linux

VALORACIÓN DEL ARTÍCULO:
5/5


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:

  1. Abra el archivo escribiendo el siguiente comando: nano file1

  2. Escriba el texto en el editor nano

  3. Presione CTRL y O para guardar el archivo

  4. 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 accidentalmente 
Habría 9 botellas verdes paradas en la pared 

.

Puede crear un fichero siguiendo estas instrucciones:

  1. Abra el archivo escribiendo el siguiente comando: nano file2

  2. Escriba el texto en el editor nano

  3. Presione CTRL y O para guardar el archivo

  4. 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 file2

Si 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 pared Inicialmente, 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.

TAMBIÉN TE INTERESA

Nothing Phone (3)

Otra vez que nos deja en shock: se presenta el Nothing Phone (3)

Siempre causa mucha expectativa el lanzamiento de productos por parte de quien suele hacer las cosas diferentes. Y ese alguien en la industria de los smartphones es Nothing. Tecnonautas siempre ha seguido muy de cerca todo lo que ha salido de esta firma, simplemente por funcionar y por ser diferente al resto. Y ahora llega

Inteligencia Artificial Generativa y deporte

Inteligencia Artificial Generativa y deporte: una relación que va tomando forma…

El deporte, tradicionalmente anclado en la emoción del directo en la televisión en directo en los estadios, está entrando en una nueva era digital, profundamente influenciada por la inteligencia artificial (IA). Inteligencia Artificial Generativa y deporte están yendo de la mano y es la relación del momento para las generaciones jóvenes. Así lo concluye el

vivo X200 FE

Vivo X200 FE: fuera caretas con esta nueva gama alta

La marca vivo, siempre muy identificada con móviles accesibles, se quita la carea para presentar el nuevo vivo X200 FE, un dispositivo que busca conquistar a los usuarios que quieren rendimiento premium sin renunciar a la comodidad. Con una cámara desarrollada junto a ZEISS, batería de larga duración, una pantalla de alto nivel y un

videovigilancia camara AOV PT

La cámara AOV PT: un motivo para irse tranquilo de vacaciones

El verano es sinónimo de descanso, desconexión y viajes. Pero también de preocupación y seguro que las siglas de la cámara AOV PT ayudan a combatir ese sentimiento. Casas vacías, negocios con menos actividad y propiedades que quedan fuera del radar diario se convierten en un blanco fácil para robos o actos vandálicos. En este