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í.