15 votos

¿Cómo puedo diff dos archivos de configuración?

Tengo dos snmpd.conf archivos, uno en un servidor que funciona, y uno que no. ¿Cómo puedo diff los dos archivos de configuración, mientras que excluyendo irrelevante comentarios y saltos de línea?

19voto

rgmarcha Puntos 194

Si algo cómodo con vim, creo firmemente que estimulan el uso de vimdiff:

vimdiff file1 file2

Esto abrirá una vim sesión con dos paneles, con un archivo en cada lado. Pone de relieve y el color se indican las diferencias entre los archivos, y todas las partes idénticas se oculta (plegado, pero ampliable).

Entonces, si usted quiere combinar selectivamente diferencias de un archivo a otro, usted puede utilizar los siguientes comandos:

(Considerar el "archivo" para ser el sitio donde está el cursor)

^W^W para cambiar el enfoque de un archivo de la ventana en el otro archivo de la ventana

c ] para avanzar a la siguiente bloque con diferencias

[c de búsqueda inversa para el bloque anterior con diferencias

hacer (*d*ffi *o*btain) para traer los cambios desde el otro archivo para el archivo actual

dp (*d*ffi *p*ut) para enviar los cambios de la actual archivo a otro archivo

Nota: Tanto hacer y dp de trabajo si usted está en un bloque o simplemente una línea de bajo de un bloque.

u *u*ndo

zo para desplegar/des-ocultar texto

zc para volver a plegar/re-ocultar texto

zr se desarrollará ambos archivos completamente (de uso :ayuda a veces para más información sobre el plegado )

:diffupdate se vuelva a escanear los archivos para los cambios

Como empezar a mover el texto modificado más o introducir cambios en el ahora-partes idénticas de los archivos automáticamente veces, demasiado.

Cuando haya terminado, usted puede dejar de fumar y escribir archivos con :xa!

Usted puede también escribir, dejar de fumar, descartar los cambios, etc., un panel en un tiempo, justo como lo haría normalmente con vim.

Usted puede utilizar todos los comandos de vim para editar los archivos a voluntad ; sólo he descrito el más común y útil de los comandos que usted es probable para su uso en un vimdiff sesión (como opuesto a un genérico vim).

15voto

Xerxes Puntos 3005
diff <(grep -v '^#' f1) <(grep -v '^#' f2)

Para evitar las líneas en blanco y las líneas que contengan nada pero los espacios, además de las líneas idénticas que tienen una sola diferencia del agregado de espacios...

diff -b \
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f1)\
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f2)

En este punto, aunque, probablemente me ponga eso en una secuencia de comandos y escribir algo parecido a la propuesta original que es un poco más legible.

6voto

Haacked Puntos 31070

Más allá de la comparación es la herramienta definitiva para esto!

Enlace: http://www.scootersoftware.com/

Disponible para Windows y Linux.

Jeff escribió un buen artículo de síntesis sobre la herramienta hace un tiempo:
http://www.codinghorror.com/blog/archives/000454.html

5voto

Rob Chanter Puntos 397

Ampliación de nima de un revestimiento, que se podía hacer eso como una función de shell y colóquelo en su .bashrc

diff <(grep -v '^#' f1) <(grep -v '^#' f2)

se convierte (utilizando-u porque me gusta " unificados)

function cleandiff {
  diff -u <(grep -v '^#' $1| grep -v '^ *$') <(grep -v '^#' $2 | grep -v '^ *$')
}

Si te gusta la GUI de diff de los espectadores, meld es agradable, y comprende la revisión controlado directorios/archivos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: