Como Comparar Archivos de Texto en Linux desde la Terminal

Esta guía forma parte de la serie de posts dedicados a exprimir al máximo la terminal de Linux y por la naturaleza del contenido podría decirse que es una extensión del post dedicado a los comandos para leer e imprimir el contenido de archivos de texto, pero en este caso he preferido ponerlo en un post separado y mantener intacto el artículo anterior.

Este post va a ser un poco corto, ya que básicamente veras como comparar dos archivos de texto (que ha simple vista pueden parecer iguales) para determinar si realmente son iguales o no. Esto quizá no es algo que se necesite hacer muy a menudo, pero en ciertos casos puede venir bien, sobretodo a la hora de comparar archivos con código fuente, archivos de configuración de alguna aplicación, etc.

Comparar Archivos de Texto

#diff

Para el propósito comentado, básicamente nos vamos a utilizar el comando diff en sus múltiples posibilidades.  El comando diff compara dos archivos línea a línea a línea para detectar diferencias entre ellos. La sintaxis básicamente esta:

$ diff [parámetros] [archivo1] [archivo2]

La salida generalmente muestra todos el contenido diferentes entre los dos archivos. El contenido referente al primer archivo pasado por argumento se muestra precedido por “<“, mientras que el referente al segundo archivo por “>”.

$ diff texto1 texto2
$

En este caso, he utilizado la opción más básica (sin parámetros) contra dos archivos de texto iguales, que he llamado texto1 y texto2. Como son iguales, no hay ningún output por pantalla.

$ diff texto2 texto2
42a43
> #force_color_prompt=yes

Si utilizas el mismo comando pero habiendo modificado uno de los archivos, diff te mostrara uno a uno todas los caracteres, palabras o frases que no coinciden. En el caso del ejemplo había eliminado una línea de texto de uno de los archivos que contenía el texto: #force_color_prompt=yes. Esta línea está en el segundo archivo (va precedida por “>” en el output) pero no en el primero.

$ diff -b texto2 texto2
42a43
> #force_color_prompt=yes

Con el parámetro [-b] tenemos la opción de hacer la comparación igual que en el caso anterior, pero ignorando todos los espacios en blanco. El output en este caso es básicamente el mismo.

Y aunque se trata de un comando que se utiliza básicamente para comparar archivos de texto, también puedes utilizarlo para comparar archivos que estén en otros formatos, como odt, doc, docx, pdf, mp4, etc., etc.

$ diff word1.odt word2.odt

En este caso he utilizado el comando (sin parámetros) para comparar dos archivos iguales en formato odt. Como ves, si no hay ningún output nos está indicando que los dos archivos que hemos pasado como parámetro son iguales.

$ diff word1.odt word2.odt
Los archivos binarios word1.odt y word2.odt son distintos

Ahora hemos hecho la misma prueba pero con dos archivos odt diferentes. Como puedes ver, en este caso el output no nos muestra las diferencias encontradas (al no ser archivos de texto) pero si que nos indica que los archivos no son iguales.

#cmp

El comando cmp compara dos archivos de texto al igual que diff, pero en este caso hace una comparación byte a byte. La sintaxis es muy similar:

$ cmp [parámetros] [archivo1] [archivo2]

También podemos hacer la prueba con , como doc, odt, pdf, mp4, etc., sin embargo en estos casos solo se limita a indicar si son iguales o no, sin señalar las diferencias. Y ahora veamos algunos ejemplos:

$ cmp texto2 texto2
texto1 texto2 son distintos: byte 1454, línea 43

Como ves, al utilizar el comando en su forma más simple sobre los dos archivos de texto modificados del ejemplo anterior, cmp nos indica que los dos archivos son distintos, y además nos muestra el byte diferente y el número de línea a que corresponde en el texto.

$ cmp -b texto2 texto2
texto1 texto2 son distintos: el byte 1454, en la línea 43 es  12 ^J  43 #

Al utilizar el comando con el parámetro [-b], si hay diferencias entre los dos archivos cmp nos indica como output el byte diferente, el número de línea y el contenido que varía.

Anuncios

2 comentarios en “Como Comparar Archivos de Texto en Linux desde la Terminal

    • Hola Luis!!
      Muchas Gracias por el comment y el feedback!
      Sin duda tomo nota de estos dos comandos. Tengo tu post en favoritos para leermelo este finde;)
      Saludos y hasta pronto!!

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s