2010-10-17 9 views
5

imagine que tiene 2 archivos tex (por ejemplo, 500kB - 3 MB de tamaño): el primero es original, el segundo es la actualización de este original. ¿Cómo puedo averiguar qué cambio (insertado, eliminado) y dónde se realizaron los cambios (en el archivo de actualización en comparación con el original)?Comparación de 2 archivos de texto: ¿qué y dónde se realizaron los cambios?

  1. ¿Hay alguna herramienta o biblioteca en alguna parte?
  2. ¿Reside esta función en cualquier editor de texto conocido?
  3. ¿Alguien sabe un algoritmo? ¿O cuáles son los métodos comunes para resolverlo a gran escala?
  4. ¿Qué harías si enfrentas este tipo de problema?

Gracias por sus ideas ...

+0

DiffMerge de souregear es gratis ... –

+0

@Mitch Wheat - Gracias, se ve bien ... – lyborko

Respuesta

1

Puede intentar Notepad++ es un editor de texto de código abierto que tiene un enchufe en comparar archivos.

2

Lo que usted describe suena exactamente como un diff herramienta de estilo Este tipo de funcionalidad está disponible en muchos de los editores de texto más avanzados.

+0

Un tiempo después su respuesta me enteré, que al menos Open Office tiene esta característica ... Gracias ... – lyborko

1

Hay una extensive list of file comparison tools en wikipedia.

Si desea hacerlo de forma programática, he usado SED y AWK en sistemas Unix antes de ahora, y existen versiones de Windows. Básicamente, estos tipos de lenguajes de procesamiento de archivos le permiten leer y comparar archivos de texto línea por línea y luego permitirle hacer algo con las diferencias (por ejemplo, guardarlos en un tercer archivo).

+0

Muchas gracias por los enlaces de arriba. Traté de desarrollar esta pequeña herramienta por mí mismo, pero me pareció bastante difícil reinventar lo que se inventó hace mucho tiempo ... No estoy seguro ahora, si lo implemento en la aplicación o si uso cada vez alguna herramienta de comparación . – lyborko

0

¿Hay alguna herramienta o biblioteca en alguna parte?

Hay muchos. Intente usar diff, es una utilidad de comparación de archivos basada en línea de comandos que funciona bien para diffs pequeños. Pero si los dos archivos difieren mucho, será difícil entender la salida de diff. En ese caso, puede usar herramientas visuales de diff de archivos como diffmerge, Kompare o vimdiff.

¿Reside esta función en cualquier editor de texto conocido?

Muchos editores modernos como vim, Eclipse tiene esta característica diffing visual ..

¿Alguien sabe un algoritmo? ¿O cuáles son los métodos comunes para resolverlo a gran escala?

Se basa en la Longest common subsequence algorithm, conocido popularmente como LCS.

LCS de texto antiguo y nuevo texto da la parte que no se ha modificado. Entonces, las partes del texto antiguo que no forman parte de LCS son las que cambiaron.

¿Qué harías si enfrentas este tipo de problema?

Utilizaría una de las herramientas de diferencia visual mencionadas para ver qué y dónde se realizaron los cambios.

Cuestiones relacionadas