No estoy seguro diff
solo puede hacerlo, pero siempre puede usar el poder de otras utilidades GNU para ayudarlo.
diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'
Hace la diferencia, luego selecciona solo las líneas que comienzan con '-'; esas se cambian y tienen valores del archivo diffa.txt, luego sed
simplemente elimine esos signos '-'.
Editar: Después de algunos experimentos con diff
, parece que el siguiente comando produce lo que desea:
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
El método más simple es usar comm
utilidad de Linux (necesita un archivo ordenado para la entrada). Escribe en la 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 según corresponda. Entonces, en su caso, se verá así:
comm -23 diffa.txt diffb.txt
Suprime líneas que son únicas para diffb.txt, 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
Me gustaría mencionar que comm
espera archivos de entrada ordenados y, por lo tanto, informa resultados diferentes a diff
.
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
es universal Felicitaciones a @vava