2008-12-09 14 views
14

Tengo dos archivos con ligeras diferencias. Un diff normal me mostrará las diferencias entre los archivos. Con -c o -u puedo agregar una cantidad de contexto a cada trozo. ¿Qué opciones puedo pasar al diff para ver todas las líneas sin cambios junto con los cambios, y obtener el diff como un solo trozo grande?¿Cómo puedo distinguir dos archivos con contexto completo?

+2

Si Sucede que conoce un límite en el tamaño de los archivos, ¿qué hay de pasar un argumento grande a -U? diff -U 9999 ... –

Respuesta

20

Utilice la opción "-y" para el lado de salida del lado totalidad por

diff -y archivo1 archivo2

Le dará una salida como algo

* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
* Praesent fringilla facilisis pede.       * Praesent fringilla facilisis pede. 
* Nulla sit amet tellus id massa luctus pellentesque.   * Nulla sit amet tellus id massa luctus pellentesque. 
* Pellentesque a neque nec elit aliquam congue.     * Pellentesque a neque nec elit aliquam congue. 
* Quisque rhoncus ultricies elit.        * Quisque rhoncus ultricies elit. 
* Pellentesque laoreet urna id arcu.       * Pellentesque laoreet urna id arcu. 
* Aenean non erat et elit egestas dictum.      * Aenean non erat et elit egestas dictum. 
* Proin ornare sem eget nulla.         * Proin ornare sem eget nulla. 
* Phasellus placerat convallis elit.       * Phasellus placerat convallis elit. 
* Donec ultricies metus non purus.        * Donec ultricies metus non purus. 
* Sed vel enim et nunc accumsan egestas.      * Sed vel enim et nunc accumsan egestas. 
* Cras eget elit in purus luctus ornare.      * Cras eget elit in purus luctus ornare. 
* In pharetra ligula sodales pede.       < 
* Morbi consectetuer mi vitae sem.        * Morbi consectetuer mi vitae sem. 
* Donec sollicitudin pretium erat.        * Donec sollicitudin pretium erat. 
* Cras facilisis nunc sed leo.         * Cras facilisis nunc sed leo. 
* Nunc varius ante sed nisi.         * Nunc varius ante sed nisi. 
                   > THIS SHOULDN'T BE HERE 
                   > THIS SHOULDN'T EITHER! 
* Aenean in quam sagittis est ornare ultricies.     * Aenean in quam sagittis est ornare ultricies. 
* Etiam dignissim scelerisque velit.       * Etiam dignissim scelerisque velit. 
* Mauris porta fringilla sapien.        * Mauris porta fringilla sapien. 
* Proin vitae nisl vitae mauris viverra tempor.     * Proin vitae nisl vitae mauris viverra tempor. 
* Maecenas quis arcu sed lorem mollis bibendum.     * Maecenas quis arcu sed lorem mollis bibendum. 
* Morbi sed turpis non risus molestie posuere.    | * Morbi sed non risus molestie posuere. 
* Curabitur id magna in nulla commodo tristique.    * Curabitur id magna in nulla commodo tristique. 
* Praesent quis nulla vel augue faucibus viverra.    | * Praesent quis nulla BAD vel augue faucibus viverra. 
* Sed interdum libero.          | * Sed lacinia interdum libero. 
                   > ANOTHER ADDITION 
* Donec ultricies posuere arcu.         * Donec ultricies posuere arcu. 
* Etiam interdum auctor mi.          * Etiam interdum auctor mi. 
20

También puede anular el formato diff Comportamiento para obtener el comportamiento deseado sin utilizar el modo uno al lado del otro:

diff --new-line-format='+%L' --old-line-format='-%L' --unchanged-line-format=' %L' file1 file2 

T su mando le mostrará el archivo completo como contexto y estar más cerca en el formato de diff -u file1 file2

+0

Gracias por esta respuesta, ¿alguna idea de cómo agregar un trozo a eso? Quiero usar 'diff2html.py', que acepta diff unificado; y tengo que decir manualmente: '(echo -e" --- _L.txt \ n +++ _R.txt \ n @@ -1,100 +1,100 @@ "&& diff --nueva-línea-formato ... _L.txt _R.txt) | python diff2html.py> LR.html' para forzar su coloración de sintaxis; sin embargo, simplemente agrego arbitrariamente los números del trozo allí hasta que empiece a funcionar, y prefiero 'diff' generar un trozo para eso. ¿Es posible? ¡Aclamaciones! – sdaau

1

La solución es establecer un tamaño de contexto (-U argumento) que es mayor que el propio archivo:

diff -U 1000000 file1.txt file2.txt 
Cuestiones relacionadas