Differenza -b e -w


20

Dalla diffmanpage:

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

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

Da ciò, deduco che la differenza tra le opzioni -be -wdeve essere -bsensibile al tipo di spazio bianco (tabulazioni vs spazi). Tuttavia, ciò non sembra essere il caso:

$ 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 
$

Quindi, qual è la differenza tra le opzioni -be -w? Testato con diffutils 3.2 su Kubuntu Linux 13.04.

Risposte:


18

La pagina man non è molto chiara su questo punto, ma la pagina informativa elabora:

1.2 Sopprimere le differenze nella spaziatura tra bianco e tab

L' opzione --ignore-tab-expansion( -E) ignora la distinzione tra tabulazioni e spazi sull'input. Una scheda è considerata equivalente al numero di spazi alla successiva tabulazione (* note Schede: :).

L' opzione --ignore-trailing-space( -Z) ignora gli spazi bianchi alla fine della linea.

L' opzione --ignore-space-change( -b) è più forte di -Ee -Zcombinata. Ignora lo spazio bianco alla fine della linea e considera equivalenti tutte le altre sequenze di uno o più caratteri dello spazio bianco all'interno di una linea. Con questa opzione, diffconsidera le seguenti due linee equivalenti, dove $indica la fine della linea:

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

L' opzione --ignore-all-space( -w) è ancora più forte. Ignora le differenze anche se una riga ha uno spazio bianco dove l'altra non ne ha. I caratteri "spazio bianco" includono tabulazione, tabulazione verticale, avanzamento modulo, ritorno a capo e spazio; alcune impostazioni locali possono definire caratteri aggiuntivi come spazi bianchi. Con questa opzione, diff considera le seguenti due linee equivalenti, dove $indica la fine della linea e ^Mindica un ritorno a capo :

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

Per molti altri programmi, newline è anche uno spazio vuoto, ma diffè un programma orientato alla linea e un carattere newline termina sempre una linea. Quindi l' opzione -wo --ignore-all-spacenon ignora le modifiche relative a newline; ignora solo altre modifiche agli spazi bianchi.


6

Sembra che siano gli spazi tra le parole forse di più, ma questo è il mio risultato:

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 

i risultati di -w non sono nulla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.