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 difflos 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 REno 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 diffomitir ciertas líneas (en mi caso, comentarios)? No sugiera grepel archivo ni compare los archivos temporales.
diff -Ino se comporta como esperaba. Actualicé mi respuesta con un ejemplo que me aclaró este comportamiento.
-Iopció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.