Me gustaría obtener (GNU) DIFF para imprimir solo las líneas que son diferentes en un archivo. Tan dado
==> diffa.txt <==
line1
line2 - in a only
line3
line4 changed
line5
==> diffb.txt <==
line1
line3
line4 changed in b
line5
line6 in b only
Me gustaría diff --someoption diffa.txt diffb.txt
para producir
line2 - in a only
line4 changed
Lo siguiente parece que debería ser útil pero es un poco críptico:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
Respuestas:
No es seguro
diff
Solo puede hacerlo, pero siempre puede usar el poder de otras utilidades de GNU para ayudarlo.Hace el diff, luego selecciona solo las líneas que comienzan con '-' - esas son cambiadas y tienen valores del archivo diffa.txt, luego
sed
solo remueve esos signos '-'.Editar: Después de algunos experimentos con
diff
, parece que el siguiente comando produce lo que quieres:fuente
--changed-group-format='%<'
estan haciendo por mi ahora ....Método más simple es utilizar
comm
Utilidad linux (necesita archivo ordenado para la entrada). Escribe en salida estándar:líneas que son únicas para diffa.txt
líneas que son únicas para diffb.txt
líneas que son comunes
y puede suprimir cada uno de ellos por el parámetro 1,2 o 3 en consecuencia. Así que en tu caso se verá así:
comm -23 diffa.txt diffb.txt
Suprime las líneas que son únicas para diffb.txt, las líneas que son comunes e imprime líneas que son únicas solo para diffa.txt
Fuente de: https://www.tutorialspoint.com/unix_commands/comm.htm
fuente
diff
que no está haciendo lo que espero. Y creo que está preinstalado tanto en BSD (es decir, Mac OS X) como en Ubuntu, por lo que no hay pesadillas en el administrador de paquetes.Me gustaría mencionar que
comm
espera archivos de entrada ordenados y, por lo tanto, informa resultados diferentes quediff
.es universal Felicitaciones a @vava
fuente