En FreeBSD o en la mayoría de los sistemas Linux, puede canalizar la salida de diff a través de cat -v -e -t
para mostrar las diferencias de espacios en blanco.
diff file1 file2 | cat -vet
Las pestañas se mostrarán como ^I
, un $
se mostrará al final de cada línea para que pueda ver los espacios en blanco al final, y los caracteres que no se pueden imprimir se mostrarán como ^X
o M-X
.
Si tiene GNU coreutils (disponible en la mayoría de las distribuciones de Linux que no son de Busybox), esto se puede simplificar a
diff file1 file2 | cat -A
En sistemas de caja ocupada, use catv -vet
.
Para vim
usuarios, hay una utilidad útil para mostrar las diferencias exactas entre los archivos:
vimdiff file1 file2
Esto colocará cada archivo en ventanas, uno al lado del otro, y las diferencias se resaltarán en color.
Algunos comandos útiles en vimdiff
Mientras que en vimdiff
, algunos comandos útiles son:
-
]c
:saltar al siguiente cambio -
[c
:saltar al cambio anterior -
ctrl-W ctrl-W
:cambiar a otra ventana -
zo
:pliegues abiertos -
zc
:cerrar pliegues
Ejemplo
Aquí hay un ejemplo de vimdiff
en un xterm
comparando dos versiones de un cups
archivo de configuración:
Puede ver que se han colapsado secciones largas de líneas idénticas. Se pueden abrir de nuevo con zo
.
El esquema de color variará según la configuración de las opciones. En el ejemplo anterior, cuando una línea aparece en un archivo pero no en el otro, esa línea tiene un fondo azul oscuro. En el otro archivo, las líneas que faltan se indican mediante líneas discontinuas. Cuando una línea aparece en ambos archivos pero tiene algunas diferencias, las partes sin cambios de las líneas tienen un fondo rosa y las partes cambiadas tienen un fondo rojo.
¿Se editó uno de los archivos en una máquina con Windows?
La terminación de línea estándar en Windows es CRLF, mientras que en Linux es simplemente LF (y en Mac solía ser CR, pero sospecho que ha cambiado desde OS X).
Prueba wc -l
en los archivos y vea cuántas líneas, luego vea si la diferencia de tamaño es la misma que la cantidad de líneas (es posible que la última línea no termine en un archivo).