diff -Bコマンドは対称ではありませんか?

diff -Bコマンドは対称ではありませんか?

one.txtの内容です(コメント:質問を書くとき\ \;を含む最初の行を無視して、コードの先頭に空白行を置くことができませんでした。したがって、ファイルは2行目で始まります。つまり、空行2本、空行1本、空行2本、空行9本、空行3本です。

\\  


one
two  









three

two.txtの内容です(コメント:上記と同じです。つまり、空白3本、次に1本、空白、2本、空白3本)

\\



one  

two

three  

だから私がするとき

diff -B one.txt two.txt

私は出力を得る

3,10d2
< one
< two
< 
< 
< 
< 
< 
< 
11a4
> one
12a6
> two

私がするとき

diff -B two.txt one.txt

空の出力、つまり2つのファイルの間に違いはありません。
何が問題なの? diffコマンドは対称でなければなりませんか?

答え1

diff fil1 file2  

違いは、file2 を file1 と同じにするために必要な変更を印刷することです。

file1 を file2 と同じにするために必要な変更は、その逆を実行するために必要な変更とは明らかに異なります。簡単な例を見てみましょう。 file1 には 1 つの単語だけが含まれone、 file2 には 1 つの単語だけが含まれており、two次のようなdiff file1 file2結果を得ます。

1c1
< one
---
> two  

そして、diff file2 file1あなたと一緒に以下を得ることができます:

1c1
< two
---
> one

したがって、diffは対称ではなく、対称でもありません。

-Bオプションについては、マニュアルには次のように記載されています 。

-B, --ignore-blank-lines        ignore changes where lines are all blank 

-B入力の空行を無視するわけではありません。多様性それらは空です。これにより、diff two.txt one.txt次のようになります。

3d2
<
5d3
<
6a5,12
>
>
>
>
>
>
>
>

3つの変更はすべて空白行なので、何も印刷されません。

関連情報