¿Qué hace realmente -u de diff?

¿Qué hace realmente -u de diff?

Parece que -upuede tomar un argumento numérico adicional, pero no consigo entender el manual.

Dice,

  -u, -U NUM, --unified[=NUM]
          output NUM (default 3) lines of unified context

¿Alguien nombra un ejemplo por favor?

No pude encontrar uno que funcione.

Respuesta1

-u por sí solo genera resultados enformato "unificado"el número simplemente cambia el número de líneas vecinas incluidas como contexto.

Respuesta2

Directamente del artículo de Wikipedia sobre diff:

Las diferencias de contexto unificadas fueron desarrolladas originalmente por Wayne Davison en agosto de 1990 (en unidiff que apareció en el Volumen 14 de comp.sources.misc). Richard Stallman agregó soporte para diferencias unificadas a la utilidad diff del Proyecto GNU un mes después, y la característica debutó en GNU diff 1.15, lanzado en enero de 1991. Desde entonces, GNU diff ha generalizado el formato de contexto para permitir el formato arbitrario de las diferencias.

El formato comienza con el mismo encabezado de dos líneas que el formato de contexto, excepto que el archivo original está precedido por "---" y el nuevo archivo está precedido por "+++". A continuación se encuentran uno o más fragmentos de cambios que contienen las diferencias de línea en el archivo. Las líneas contextuales sin cambios están precedidas por un carácter de espacio, las líneas de adición están precedidas por un signo más y las líneas de eliminación están precedidas por un signo menos.

Un fragmento comienza con información de rango y es seguido inmediatamente por las adiciones de líneas, las eliminaciones de líneas y cualquier número de líneas contextuales. La información del rango está rodeada por signos de doble arroba y combina en una sola línea lo que aparece en dos líneas en el formato de contexto (arriba). El formato de la línea de información de rango es el siguiente:

@@ -l,s +l,s @@ optional section heading

Luego, en todo el archivo donde se deben realizar cambios, aparecerán líneas como estas:

-check this dokument. On
+check this document. On

NOTA:A -significa que se está eliminando y a +significa que se está agregando.

El comando diff -Utambién puede tomar un parámetro adicional, un número, que indica cuántas líneas de texto adyacente hay alrededor del punto donde se produce la diferencia entre los 2 archivos. Esto es útil para obtener un mejor contexto de lo que realmente implican las diferencias.

Ejemplo

archivo1

$ cat file1.txt 
The Rain in Spain by
Servants Poor Professor Higgins!
Poor Professor Higgins! Night and day
He slaves away! Oh, poor Professor Higgins!
All day long On his feet; Up and down until he's numb;
Doesn't rest; Doesn't eat;

archivo2

$ cat file2.txt 
The Rain in Spain by
added extra line here
Servants Poor Professor Higgins!
Poor Professor Higgins! Night and day
He slaves away! Oh, poor Professor Higgins!
All day long On his feat; Up and down untile he's numb;
Doesn't rest; Doesn't eat;

diferencia

$ diff -U 2 file1.txt file2.txt 
--- file1.txt   2013-04-26 09:39:13.496835363 -0400
+++ file2.txt   2013-04-26 09:38:04.838299195 -0400
@@ -1,6 +1,7 @@
 The Rain in Spain by
+added extra line here
 Servants Poor Professor Higgins!
 Poor Professor Higgins! Night and day
 He slaves away! Oh, poor Professor Higgins!
-All day long On his feet; Up and down until he's numb;
+All day long On his feat; Up and down untile he's numb;
 Doesn't rest; Doesn't eat;

Verdiferencia en wikipediapara más detalles.

información relacionada