2

次の例でGNUDiffに空白行を無視させるにはどうすればよいですか?

ファイルa:

x
do

done

ファイルb:

x

do
done

どちらのファイルにも、どの行にも末尾の空白はありません。

MacOSXIでGNUDiff3.1を使用すると、次のようになります。

diff -w a b
2d1
< do
3a3
> do

さまざまな有望なオプションを追加する場合も同じです。

diff --suppress-blank-empty -E -b -w -B -I '^[[:space:]]*$' --strip-trailing-cr -i a b
2d1
< do
3a3
> do

ここで何が欠けていますか?

diff --version
diff (GNU diffutils) 3.1
4

1 に答える 1

1

ここでの問題は、diff が最初のファイルから削除され、2 番目のファイルに追加されているように見えることだと思いますdo。おそらく、変更に関する十分なコンテキストがないためです。

引数としてファイルの順序を逆にすると、diff はスペースが追加および削除されたことを報告し、--ignore-blanks-lines.

統一された差分として見ると、これはもう少し明確です。

$ diff test.txt test2.txt -u
--- test.txt    2015-10-20 10:50:52.585167600 -0700
+++ test2.txt   2015-10-20 10:51:01.042167600 -0700
@@ -1,4 +1,4 @@
 x
-do

+do
 done

prp@QW7PRP09-14 ~/temp
$ diff test2.txt test.txt -u
--- test2.txt   2015-10-20 10:51:01.042167600 -0700
+++ test.txt    2015-10-20 10:50:52.585167600 -0700
@@ -1,4 +1,4 @@
 x
-
 do
+
 done

--ignore-blank-lines を使用した結果と、順序が入れ替わった結果:

prp@QW7PRP09-14 ~/temp
$ diff test2.txt test.txt -B -u
于 2015-10-20T18:05:46.013 に答える