lentes - diff php
¿Cómo puedo diferenciar 2 archivos mientras ignoro los espacios en blanco iniciales? (3)
Si uno está usando pestañas incorrectamente, puede arreglar eso
expand bad_file
Tengo 2 archivos fuente, son versiones diferentes de la misma cosa. Sin embargo, uno ha pasado por un editor diferente que realizó cambios de sangría, por lo que todas las líneas se muestran diferentes en diff.
¿Hay un comando de diferencia o un filtro que pueda usar para diferenciar de modo que la salida solo sean líneas que sean diferentes después de ignorar los espacios / tabulaciones iniciales?
diff
tiene algunas opciones que pueden ser útiles para usted:
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-Z, --ignore-trailing-space
ignore white space at line end
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
-B, --ignore-blank-lines
ignore changes whose lines are all blank
Por lo tanto, diff -w old new
debe ignorar todos los espacios y, por lo tanto, informar solo líneas sustancialmente diferentes.
diff -bB file[12]
-b, --ignore-space-change
ignore changes in the amount of white space
-B, --ignore-blank-lines
ignore changes whose lines are all blank
Tenga en cuenta que la opción -w
ignorará todos los espacios en blanco antes de diferenciarse, por lo que una línea como this isa line
y this is a line
en cada archivo que se comparará como thisisaline
y no informará las diferencias.
Además de los problemas con la opción -w
, incluso la opción -b
tiene problemas menores y eso no ignora los espacios en blanco si aparecen al principio de una línea
Por lo tanto, debe usar sed
para eliminar los espacios en blanco que se produjeron al inicio y luego hacer `diff -bB.
diff -bB <(sed ''s/^[ /t]*//'' file1) <(sed ''s/^[ /t]*//'' file2)