2012-12-11 511 views
2

如何獲得GNU diff忽略下例中的空行?diff忽略空白喜歡

文件一:

x 
do 

done 

文件B:

x 

do 
done 

無論是文件中的任何行尾部的空格。

使用GNU的diff 3.1 Mac OS X上我得到:

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 
+0

我有同樣的問題/問題。 '-bBw'或任何完整的參數都不會忽略空白行或空格。你有沒有想出一個解決方案呢? –

回答

1

我覺得這裏的問題是,差異是看到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 

[email protected] ~/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 

並與 - 忽略空白行的結果,下面的順序切換:

[email protected] ~/temp 
$ diff test2.txt test.txt -B -u 
+0

差異似乎並不獨立於參數的順序,也就是說,如果'diff a b'是「沒有差異」,那麼'diff b a'應該是相同的。 – Robert