Tengo dos archivos de configuración, el original del administrador de paquetes y uno personalizado modificado por mí mismo. He agregado algunos comentarios para describir el comportamiento.
¿Cómo puedo ejecutar diff
los archivos de configuración, omitiendo los comentarios? Una línea comentada se define por:
- espacios en blanco iniciales opcionales (pestañas y espacios)
- signo hash (
#
) - cualquier otro personaje
Sería la expresión regular (más simple) omitiendo el primer requisito #.*
. Probé la opción --ignore-matching-lines=RE
( -I RE
) de GNU diff 3.0, pero no pude hacerlo funcionar con ese RE. También lo intenté .*#.*
y .*\#.*
sin suerte. Poner literalmente la línea ( Port 631
) como RE
no coincide con nada, tampoco ayuda a colocar el RE entre barras.
Como se sugiere en la herramienta "diff", ¿parece que falta la expresión regular de la herramienta? , Intenté grep -G
:
grep -G '#.*' file
Esto parece coincidir con los comentarios, pero no funciona diff -I '#.*' file1 file2
.
Entonces, ¿cómo debe usarse esta opción? ¿Cómo puedo hacer diff
omitir ciertas líneas (en mi caso, comentarios)? No sugiera grep
el archivo ni compare los archivos temporales.
diff -I
no se comporta como esperaba. Actualicé mi respuesta con un ejemplo que me aclaró este comportamiento.
-I
opción hace que se ignore un bloque solo si todas sus líneas coinciden con la expresión regular. Por lo tanto, puede ignorar un cambio de solo comentario de esa manera, pero no los cambios de comentario que están cerca de un cambio sin comentario.