J'ai 2 fichiers source, ce sont des versions différentes de la même chose. Cependant, on est passé par un éditeur différent qui a apporté des modifications au retrait, de sorte que toutes les lignes apparaissent différemment dans diff.
Existe-t-il une commande diff ou un filtre que je peux utiliser pour diff avec afin que la sortie ne contienne que des lignes différentes après avoir ignoré les espaces/tabulations en tête?
diff
a quelques options qui peuvent vous être utiles:
-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
Donc, diff -w old new
doit ignorer tous les espaces et ne signaler que des lignes très différentes.
Si l’on utilise mal les onglets, vous pouvez résoudre ce problème
expand bad_file
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
Veuillez noter que l'option -w
ignorera tous les espaces avant la différence. Ainsi, une ligne comme this i s a line
et this is a line
dans chaque fichier sera comparée à thisisaline
et ne signalera pas les différences.
En plus du problème d'option -w
, même l'option -b
présente des problèmes mineurs et elle n'ignore pas les espaces, si elle vient au début d'une ligne.
Vous devriez donc utiliser sed
pour supprimer les espaces blancs apparus au début puis faire `diff -bB.
diff -bB <(sed 's/^[ \t]*//' file1) <(sed 's/^[ \t]*//' file2)