如何让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
答案 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