Fark -b ve -w farkı


20

Gönderen diffman:

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

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

Bundan, -bve -wseçenekleri arasındaki farkın boşluk türüne (sekmeler ve boşluklar) -bduyarlı olması gerektiği sonucunu çıkarıyorum. Ancak, durum böyle görünmüyor:

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

Öyleyse, -bve -wseçenekleri arasındaki fark nedir? Kubuntu Linux 13.04 üzerinde diffutils 3.2 ile test edilmiştir.

Yanıtlar:


18

Man sayfası bu noktada çok net değil, ancak bilgi sayfası ayrıntılı olarak açıklanıyor:

1.2 Boşluk ve Sekme Boşluklarındaki Farklılıkları Bastırma

--ignore-tab-expansion( -E) Seçenek girişi üzerindeki çıkıntıların ve boşluklar arasındaki ayrımı göz ardı eder. Bir sekmenin, bir sonraki sekme durağındaki boşluk sayısına eşdeğer olduğu düşünülür (* not Sekmeler: :).

--ignore-trailing-space( -Z) Seçeneği hat ucundaki boşluk yok sayar.

--ignore-space-change( -b) Seçenek daha güçlüdür -Eve -Zbirleştirdi. Satır ucundaki beyaz boşluğu yok sayar ve bir satır içindeki bir veya daha fazla beyaz boşluk karakterinin diğer tüm dizilerini eşdeğer kabul eder. Bu seçenekle, diffaşağıdaki iki satırı eşdeğer olarak kabul $eder; burada satır sonunu gösterir:

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

--ignore-all-space( -w) Seçeneği hala güçlüdür. Bir satırda diğer satırın olmadığı beyaz boşluk olsa bile farklılıkları yok sayar. "Beyaz boşluk" karakterleri arasında sekme, dikey sekme, form besleme, satır başı ve boşluk bulunur; bazı yerel ayarlar ek karakterleri boşluk olarak tanımlayabilir. Bu seçenekle, diff aşağıdaki iki satırın eşdeğer olduğunu düşünür; burada $satır sonunu ve satır ^Mbaşını belirtir:

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

Diğer birçok program için, yeni satır aynı zamanda bir boşluk karakteridir, ancak diffsatır yönelimli bir programdır ve yeni satır karakteri her zaman bir satırı sonlandırır. Bu nedenle -wveya --ignore-all-spaceseçeneği, yeni satırla ilgili değişiklikleri göz ardı etmez; yalnızca diğer beyaz boşluk değişikliklerini yok sayar.


6

Görünüşe göre kelimeler arasında boşluk olabilir ama bu benim sonucum:

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 

-w 'nin sonuçları hiçbir şey değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.