GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo comparar tres archivos en Linux usando la herramienta diff3

En uno de nuestros tutoriales anteriores, discutimos una utilidad de línea de comandos de Linux, denominada diff , que le permite comparar dos archivos línea por línea. Pero, ¿y si el requisito es comparar no dos, sino tres archivos? Sí, también existe una utilidad de línea de comandos de Linux para esto, y se llama apropiadamente diff3 .

Si ha estado buscando una herramienta de este tipo, no busque más, ya que en este tutorial explicaremos el uso de diff3 a través de ejemplos fáciles de entender.

But before we move forward, we would like you to know that all the examples mentioned in this tutorial have been tested on Ubuntu 14.04 with bash version 4.3.11(1), and the version of diff3 that we've used is 3.3.

Instalar diff3

Es probable que la herramienta diff3 se instale de forma predeterminada en su sistema, al menos en Ubuntu. Pero si ese no es el caso, no se preocupe, ya que puede hacerlo fácilmente instalando el paquete GNU Diffutils. Para obtener instrucciones sobre cómo descargar e instalar el paquete en su sistema, diríjase aquí.

Uso de Diff3

Como la utilidad diff3 compara tres archivos, para nuestros ejemplos de uso, tendremos que tomar tres archivos que pasaremos como entrada a la herramienta.

Aquí está el archivo1:

This is line1 with some change
This is line2
This is line3

Aquí está el archivo2:

This is line1
This is line2
This is line3

Y aquí está el archivo3:

This is line1
This is line2
This is line3

Claramente, si vemos el contenido de estos tres archivos, el único cambio está en la primera línea del primer archivo. Así que ahora veamos cómo diff3 informa este cambio.

Así es como podemos usar diff3 en este caso:

diff3 file1 file2 file3

Y aquí está la salida que produce:

====1
1:1c
This is line1 with some change
2:1c
3:1c
This is line1

Puede comprender la salida de la siguiente manera:

  • La primera línea que comienza con cuatro signos '=' y termina con el número '1' indica que el cambio está en el primer archivo.
  • En la siguiente línea, el primer '1' significa archivo1; el '1c' después de dos puntos 'significa que la primera línea contiene'. La línea real se muestra en la siguiente línea de la salida.
  • Del mismo modo, 2:1c y 3:1c significan 'la primera línea de file2 y file3 contiene'. Y como el contenido de la línea es el mismo en ambos archivos, la línea real se muestra solo una vez, al final de la salida.

Para aclarar las cosas, tomemos otro caso donde el cambio está en el archivo3.

Aquí está el archivo1:

This is line1
This is line2
This is line3

Aquí está el archivo2:

This is line1
This is line2
This is line3

Y aquí está el archivo3:

This is line1 with some change
This is line2
This is line3

El comando sigue siendo el mismo:

diff3 file1 file2 file3

Y aquí está el resultado:

====3
1:1c
2:1c
This is line1
3:1c
This is line1 with some change

Entonces, la salida en este caso se puede comprender como:

  • El cambio está en el archivo 3
  • Tanto el archivo 1 como el archivo 2 contienen "Esta es la línea 1" como su primera línea
  • Mientras que el archivo 3 contiene "Esta es la línea 1 con algunos cambios" como su primera línea.

Eso fue todo acerca de cómo los informes diff3 cambian en las líneas. Ahora veamos cómo se comporta diff3 si uno de los archivos contiene una línea extra:

Mientras que el archivo 1 y el archivo 2 siguen siendo los mismos, aquí está el archivo 3:

This is line1
This is line2
This is line3
This is line4

Como se desprende claramente de su contenido, file3 ahora contiene una línea adicional al final.

Ejecutemos el mismo comando diff3:

diff3 file1 file2 file3

Y aquí está la salida que produce el comando:

====3
1:3a
2:3a
3:4c
This is line4

La salida comienza diciendo que el cambio está en el archivo3. El cambio está en la cuarta línea del archivo3 (3:4c), que es una línea completamente nueva en comparación con archivo1 y archivo2.

Lo que discutimos hasta ahora fueron algunos casos sencillos. Tomemos un par de situaciones un poco complejas. Por ejemplo, considere que el archivo1, el archivo2 y el archivo3 contienen lo siguiente:

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

Así que ahora tanto el archivo 1 como el archivo 2 contienen cambios, y eso también en diferentes líneas. Veamos qué produce diff3 en este caso:

====
1:2,3c
This is line2 with some change
This is line3
2:2,3c
This is line2
This is line3
3:2,3c
This is line2
This is line3 with some change

Como puede ver en el resultado que se muestra arriba, la primera línea no contiene ningún número. Eso es porque no uno, sino varios archivos contienen cambios ahora. Para diff3, las líneas 2 y 3 de los tres archivos ahora son diferentes. Esa es la razón por la que en lugar de un solo número después de los dos puntos (:), la salida ahora contiene un rango - '2,3', lo que significa línea 2 a línea 3.

Tomemos un ejemplo más. Supongamos que esta vez los tres archivos contienen la siguiente información: 

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

Ahora, cuando se ejecuta el comando diff, produce el siguiente resultado:

====
1:4c
This is line4
2:3a
3:4,5c
This is line4
This is line5

Aquí, si trata de entender, el comando diff3 dice que los cambios están después de la línea 3 en los tres archivos. Mientras que el archivo 1 contiene la línea "Esta es la línea 4" como su cuarta línea, el archivo 3 contiene "Esta es la línea 4" y "Esta es la línea 5" como sus líneas cuarta y quinta, respectivamente. El archivo 2, por otro lado, solo tiene 3 líneas.

Eso fue todo sobre el trabajo básico en diff3. Por lo que vale, esto es lo que dice la documentación oficial sobre la herramienta:"Puedes usar el diff3 comando para mostrar las diferencias entre tres archivos. Cuando dos personas han realizado cambios independientes en un original común, diff3 puede informar las diferencias entre la versión original y las dos modificadas, y puede generar un archivo combinado que contenga los cambios de ambas personas junto con advertencias sobre conflictos.

Conclusión

Acabamos de arañar la superficie aquí, Diff3 es capaz de hacer mucho más. Por ejemplo, como también señala la documentación oficial, también puede usarlo para fusionar cambios. Además, hay muchas opciones de línea de comandos que le permiten personalizar la salida del comando y acceder a otras funciones que ofrece. Todo está en la página del manual, revíselo.


Linux
  1. Cómo hacer una comparación línea por línea de archivos en Linux usando el comando diff

  2. Cómo reiniciar Linux usando la línea de comandos

  3. 11 ejemplos de comandos diff3 de Linux (comparar 3 archivos línea por línea)

  4. Cómo ordenar archivos en Linux usando el comando Ordenar

  5. ¿Cómo comparo archivos binarios en Linux?

Cómo compartir archivos localmente en Linux usando NitroShare

Cómo cambiar el nombre de los archivos usando la línea de comandos en Linux

Cómo comparar archivos en Linux usando la herramienta Meld (Diff/Merge)

Cómo comparar dos archivos en la terminal de Linux

Cómo copiar archivos en Linux usando el comando CP

Cómo descargar archivos en Rocky Linux 8 en la línea de comandos usando wget