【问题标题】:diff ignore blank likes差异忽略空白喜欢
【发布时间】:2015-10-21 02:05:46
【问题描述】:

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

【问题讨论】:

  • 我有同样的问题/疑问。 -bBw 或任何完整参数都不会忽略空白行或空格。你想出解决方案了吗?

标签: diff


【解决方案1】:

我认为这里的问题是 diff 将do 视为从第一个文件中删除,并添加到第二个文件中,可能是因为更改周围没有足够的上下文。

如果您将文件的顺序作为参数颠倒,diff 会报告空间已添加和删除,然后将使用--ignore-blanks-lines 忽略它。

把它看成一个统一的diff,这样就清楚了一点:

$ 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

【讨论】:

  • diff 不独立于参数的顺序似乎仍然很奇怪,也就是说,我希望如果diff a b 是“没有差异”,那么diff b a 应该说同样的话。
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多