Différence diff -b et -w


20

Depuis la diffpage de manuel:

-b, --ignore-space-change
      ignore changes in the amount of white space

-w, --ignore-all-space
      ignore all white space

J'en déduis que la différence entre les options -bet -wdoit être -bsensible au type d'espaces (tabulations vs espaces). Cependant, cela ne semble pas être le cas:

$ diff 1.txt 2.txt 
1,3c1,3
<     Four spaces, changed to one tab
<         Eight Spaces, changed to two tabs
<     Four spaces, changed to two spaces
---
>       Four spaces, changed to one tab
>               Eight Spaces, changed to two tabs
>   Four spaces, changed to two spaces
$ diff -b 1.txt 2.txt 
$ diff -w 1.txt 2.txt 
$

Alors, quelle est la différence entre les options -bet -w? Testé avec diffutils 3.2 sur Kubuntu Linux 13.04.

Réponses:


18

La page de manuel n'est pas très claire sur ce point, mais la page d'information développe:

1.2 Suppression des différences d'espacement des blancs et des tabulations

L' option --ignore-tab-expansion( -E) ignore la distinction entre les tabulations et les espaces en entrée. Un onglet est considéré comme équivalent au nombre d'espaces jusqu'au prochain taquet de tabulation (* remarque Tabulations: :).

L' option --ignore-trailing-space( -Z) ignore les espaces blancs à la fin de la ligne.

L' option --ignore-space-change( -b) est plus forte que -Eet -Zcombinée. Il ignore les espaces blancs à la fin de la ligne et considère que toutes les autres séquences d'un ou plusieurs caractères d'espaces blancs dans une ligne sont équivalentes. Avec cette option, diffconsidère les deux lignes suivantes comme équivalentes, où $dénote la fin de la ligne:

 Here lyeth  muche rychnesse  in lytell space.   -- John Heywood$
 Here lyeth muche rychnesse in lytell space. -- John Heywood   $

L' option --ignore-all-space( -w) est encore plus forte. Il ignore les différences même si une ligne a un espace blanc alors que l'autre ligne n'en a pas. Les caractères "espace blanc" incluent tabulation, tabulation verticale, saut de page, retour chariot et espace; certains paramètres régionaux peuvent définir des caractères supplémentaires comme des espaces blancs. Avec cette option, diff considère les deux lignes suivantes comme équivalentes, où $dénote la fin de la ligne et ^Mdénote un retour chariot:

 Here lyeth  muche  rychnesse in lytell space.--  John Heywood$
   He relyeth much erychnes  seinly tells pace.  --John Heywood   ^M$

Pour de nombreux autres programmes, la nouvelle ligne est également un caractère d'espace blanc, mais diffest un programme orienté ligne et un caractère de nouvelle ligne termine toujours une ligne. Par conséquent, l' option -wou --ignore-all-spacen'ignore pas les modifications liées à la nouvelle ligne; il ignore uniquement les autres changements d'espace blanc.


6

On dirait que ce sont des espaces entre les mots peut-être plus mais voici mon résultat:

diff 1.txt 2.txt 
1,2c1,2
< test
< next next
---
> te  st     
> next  next


diff -b 1.txt 2.txt 
1c1
< test
---
> te  st 

les résultats de -w ne sont rien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.