diff忽略空白喜欢

时间:2012-12-11 19:44:08

标签: diff

如何让GNU diff忽略以下示例中的空行?

档案a:

x
do

done

文件b:

x

do
done

两个文件都没有任何行中的空格。

在Mac OS X上使用GNU diff 3.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

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是diff看到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