GNU/Linux >> Tutoriales Linux >  >> Linux

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

Como ya sabe, el comando diff de Linux compara dos archivos.

Sin embargo, la utilidad Linux diff3 compara tres archivos y también es capaz de fusionar la diferencia entre dos archivos en el tercero. En este artículo, entenderemos el uso del comando diff3 a través de algunos ejemplos.

La sintaxis básica de diff3 es:

06

1. Salida Diff3 básica

Para este ejemplo, usemos estos tres archivos:parent.txt, your.txt y mine.txt.

15

Ahora, si el comando diff3 se ejecuta sobre estos tres archivos:

23

Vemos que la salida contiene información de comparación de estos tres archivos. En la salida anterior:

  • La primera línea '====' significa que los tres archivos son diferentes.
  • A continuación, la línea '1:1,2c' significa que para el primer archivo (1:) proporcionado como argumento para diff3 (parent.txt en nuestro caso), las líneas en el rango de uno a dos (1,2 ) son diferentes en comparación con los otros dos archivos y deben cambiarse (c) y estas dos líneas también se muestran en las siguientes dos líneas de la salida.
  • Del mismo modo, se pueden comprender '2:1,2c' y '3:1,2c'.

Tenga en cuenta que además de usar la utilidad diff3, también es útil entender cómo usar diff, colordiff, wdiff o vimdiff para su comparación típica de dos archivos.

2. Si dos de tres archivos son similares

Para este ejemplo, suponga que los archivos mine.txt y parent.txt son exactamente iguales.

36

Y diff3 se ejecuta sobre estos tres archivos ahora:

45

La primera línea '====3' significa que esta vez el archivo número 3, es decir, your.txt, es diferente de los otros dos. Esto también es visible en la salida.

3. 'c' es para cambiar mientras que 'a' es para agregar

Hasta ahora, hemos visto un alfabeto 'c' en la salida. Esta letra significa "cambio" requerido en las líneas/texto. Si aparece el alfabeto 'a', significa que se debe agregar una línea.

Tomemos otro ejemplo:

53

Ahora ejecute diff3 en estos tres archivos:

66

El resultado anterior significa que el cambio en el archivo 3 (es decir, your.txt) debe agregarse en el archivo 1 (mine.txt) y en el archivo 2 (parent.txt) para que los tres archivos sean similares. Alternativamente, la segunda línea en your.txt se puede cambiar (c) para que los tres archivos sean similares.

4. Salida de cambios superpuestos usando la opción -x

El indicador -x se puede usar para mostrar los cambios que causan superposiciones. El orden de los nombres de archivo dados como argumento para diff3 importa aquí. Por ejemplo:

77

significa que desea fusionar en mine.txt los cambios que convertirían parent.txt en your.txt

Tomemos un ejemplo:

84

Ejecutar diff3 ahora:

94

Entonces vemos que
la salida dice que la tercera línea de mine.txt tiene que cambiarse a 'bye' para fusionar los cambios que convertirían parent.txt en your.txt

5. Salida de cambios no combinados usando la opción -e

La opción -e se puede usar para generar cambios no combinados de parent.txt a your.txt en mine.txt.
Considerando los mismos archivos que se usaron en el ejemplo anterior:

102

Entonces vemos que la salida muestra los cambios no combinados.

6. Salida de archivo combinado usando la opción -m

Se puede generar un archivo fusionado que comprenda el contenido de los tres archivos con la opción -m. Por ejemplo, si los siguientes son los tres archivos:

119

Ahora, si se ejecuta diff3 usando la opción -m:

124

Entonces, la salida anterior muestra el contenido del archivo fusionado que ha fusionado el contenido de los tres archivos proporcionados como argumentos para diff3.

7. Comprender los conflictos usando la opción -m

Producir un archivo combinado (a partir de los tres archivos) no siempre es pan comido (como se muestra en el ejemplo anterior).

Considere el contenido del archivo de entrada a continuación:

139

Si diff3 se ejecuta sobre los archivos anteriores, se muestra el siguiente resultado:

141

Aquí, las dos primeras líneas son parte indiscutible del archivo fusionado, pero el conflicto real se muestra entre <<<<<<>>>>>> junto con los nombres y contenidos de los archivos.

8. Acepte un argumento de stdin usando '-'

Se puede usar un '-' en lugar de cualquiera de los nombres de archivo para aceptar la entrada de stdin para ese argumento.

154

Como podemos ver, cuando se ejecutó el comando anterior, el contenido del tercer archivo se proporcionó a través de stdin. Tenga en cuenta que después de ingresar el contenido del archivo desde stdin, es necesario presionar la combinación de teclas ctrl+d para obtener la salida de diff3.

9. diff3 usa la herramienta diff para comparar archivos

Aunque diff3 se jacta de comparar 3 archivos, en realidad utiliza la herramienta diff internamente para realizar las comparaciones entre dos archivos. Esto se puede confirmar pasando un ejecutable como argumento de entrada:

160

Entonces podemos ver en el resultado anterior, el error del comando diff3 dice que el programa subsidiario 'diff' falló.

10. Especifique un programa diff a través de la opción –diff-program

El comando diff3 brinda la flexibilidad de proporcionar un programa diff como argumento para que el mismo pueda usarse para comparar archivos y proporcionar los resultados que puede usar diff3. Esta funcionalidad se logra usando la opción –diff-program.

174

11. Trate todos los archivos como texto usando la opción -a

Como puede ver en el ejemplo 9 que se muestra arriba, cuando pasamos un archivo que no es de texto (un ejecutable a.out), diff3 devolvió el error. Pero si queremos decirle a diff3 que compare incluso archivos que no son de texto, entonces se puede usar una opción -a que le dice a diff3 que considere todos los archivos de entrada como archivos de texto. Por ejemplo:

181

Entonces, el resultado anterior muestra que diff3 intentó comparar incluso un archivo ejecutable tratándolo como un archivo de texto.

Artículos diferenciales adicionales

  • Las 4 principales herramientas de diferenciación de archivos en UNIX/Linux:Diff, Colordiff, Wdiff, Vimdiff
  • ¡BZ es Eazy! ejemplo bzdiff
  • Visual File Diff con Vimdiff:¡sí marca la diferencia!
  • El poder de los comandos Z:ejemplos de Zdiff

Linux
  1. Ejemplos de comandos de cola de Linux

  2. 10 ejemplos de comandos Cat para administrar archivos en Linux / UNIX

  3. 7 ejemplos de comandos de parches para aplicar archivos de parches de diferencias en Linux

  4. Ejemplos de comandos ln en Linux

  5. Ejemplos de comandos dd en Linux

Comando lsof en Linux (10 ejemplos)

Comando táctil en Linux (5 ejemplos)

Comando WC de Linux con ejemplos

Ejemplos de comandos diff de Linux

Ejemplos de comandos cat de Linux

Ejemplos de comandos gzip de Linux