solo entre diferencias comando archivos linux bash diff vimdiff

diferencias - diff entre dos archivos linux



¿Cómo ignorar algunas diferencias en el comando diff? (4)

Mejorando la solución anterior por John Kugelman:

diff <(sed ''s/ab[XY]d/abd/g'' file1) <(sed ''s/ab[XY]d/abd/g'' file2)

es probablemente lo que puede estar buscando! Esta versión normaliza el cambio específico en cada línea sin eliminar la línea en sí. Esto permite a diff mostrar cualquier otra diferencia que permanezca en la línea.

diff tiene una opción -I regexp , que ignora los cambios que solo insertan o eliminan líneas que coinciden con la expresión regular dada. Necesito un análogo de esto para el caso, cuando los cambios están entre dos líneas (en lugar de insertar o eliminar líneas).

Por ejemplo, quiero ignorar todas las diferencias entre "abXd" y "abYd" , para X e Y dados.

Parece que diff no tiene tal habilidad. ¿Hay alguna alternativa adecuada para diff ?


Podría usar sed para reemplazar las instancias del patrón con una cadena estándar:

diff <(sed ''s/ab[XY]d/ab__REPLACED__d/g'' file1) <(sed ''s/ab[XY]d/ab__REPLACED__d/g'' file2)


Puede filtrar los dos archivos a través de sed para eliminar las líneas que no le interesan. El patrón general es /regex1/,/regex2/ d para eliminar cualquier cosa entre líneas que coincidan con dos expresiones regulares. Por ejemplo:

diff <(sed ''/abXd/,/abYd/d'' file1) <(sed ''/abXd/,/abYd/d'' file2)


Suponiendo que X e Y son caracteres individuales, entonces -I ''ab[XY]d'' funciona bien para mí.