Tengo dos archivos que me parecen idénticos (incluidos los espacios en blanco al final y las nuevas líneas) pero diff todavía dice que difieren. Incluso cuando hago una diff -y
comparación lado a lado, las líneas se ven exactamente iguales. La salida de diff son los 2 archivos completos.
¿Alguna idea de lo que lo está causando?
sed -n l filename
. Si no ayuda, agregue un ejemplo de datos ydiff
salida aquí.file
comando le indirecta sobre el contenido del archivo, incluyendo cosas comoASCII text, with CRLF line terminators
vsASCII text
.Respuestas:
Extraño ... ¿puedes intentarlo
cmp
? Es posible que desee utilizar la-b
opción ' ' también.Página de manual de cmp : compara dos archivos byte a byte.
Esta es una de las cosas buenas de Unix / Linux ... tantas herramientas :)
fuente
-b
es paraignore changes in the amount of white space
.¿Pueden las diferencias ser causadas por las terminaciones de línea de DOS vs. UNIX, o algo similar?
¿Y si ustedes
hexdump
? Esto podría mostrar diferencias más obviamente, por ejemplo:fuente
Tratar:
La
-t
opción harácat
que se muestren claramente los caracteres especiales, por ejemplo.^M
para CR,^I
para tab.Desde la página del manual (OS X):
fuente
Mi primera suposición, que se confirma, es que los archivos usan diferentes finales de línea. Podría haber alguna otra diferencia en el espacio en blanco, como la presencia de espacios en blanco al final (pero normalmente no se obtendría en muchas líneas) o una sangría diferente (tabulaciones frente a espacios). Utilice un comando que imprima espacios en blanco y caracteres de control en una forma visible, como
Puede confirmar que las diferencias solo tienen que ver con las terminaciones de línea normalizándolas primero. Puedes tener una
dos2unix
utilidad; de lo contrario, elimine explícitamente el carácter CR (^ M, \ r, \ 015) adicional:o, si
file1
es el que tiene terminaciones de DOSfuente