Diff -bと-wの違い


20

diffマンページから:

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

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

このことから-b-wオプションとオプションの違いは、空白-b種類(タブとスペース)に敏感でなければならないことを推測します。ただし、そうではないようです。

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

では、オプション-b-wオプションの違いは何ですか?Kubuntu Linux 13.04上のdiffutils 3.2でテスト済み。

回答:


18

その点については、manページはあまり明確ではありませんが、infoページでは詳しく説明しています。

1.2空白とタブの間隔の違いを抑制する

--ignore-tab-expansion-E)オプションは、入力のタブとスペースとの間の区別を無視します。タブは、次のタブストップまでのスペースの数に等しいと見なされます(*注:タブ::)。

--ignore-trailing-space-Z)オプションは、行の最後の空白を無視します。

--ignore-space-change-b)オプションがより強い-E-Z組み合わせます。行末の空白を無視し、行内の1つ以上の空白文字の他のすべてのシーケンスを同等と見なします。このオプションでdiffは、次の2行が同等であると見なされます。$ここで、行の終わりを示します。

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

--ignore-all-space-w)オプションがまだ強いです。1つの行に空白があり、他の行に空白がない場合でも、違いは無視されます。「空白」文字には、タブ、垂直タブ、フォームフィード、キャリッジリターン、およびスペースが含まれます。一部のロケールでは、追加の文字を空白として定義できます。このオプションを使用するdiff と、次の2行が同等であると見なされます。$ここで、行の終わりと^M復帰を示します。

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

他の多くのプログラムでは、改行も空白文字diffですが、行指向のプログラムであり、改行文字は常に行を終了します。したがって、-wor --ignore-all-spaceオプションは、改行関連の変更を無視しません。他の空白の変更のみを無視します。


6

それはおそらく単語間のスペースのようですが、これは私の結果です:

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の結果は何もありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.