实际上完全忽略空格的差异

A.B*_*oll 4 windows linux diff

我正在寻找一个可以区分两个文件的应用程序,实际上忽略所有空格,例如:

class foo { 
  bar
  spaz 
}
Run Code Online (Sandbox Code Playgroud)

等价于

class foo{bar spaz}
Run Code Online (Sandbox Code Playgroud)

或者,也

classfoo { 
  barspaz}
Run Code Online (Sandbox Code Playgroud)

但不是

classfoo { 
  spazspaz
}
Run Code Online (Sandbox Code Playgroud)

即它会告诉我,spaz在前面的例子中已经取代了bar任何其他例子中的位置。它只需要比较 2 个文件。

  • 它可以是 windows 或 linux/unix/posix 兼容的实用程序
  • 我试过 lin/unixdiff -w命令,如果每行的差异是空格,它只会忽略空格。我没有看到完全忽略空格的选项。
  • 我还尝试了 UECompare 或 Ultracompare,这是一个用于 Windows 的非免费比较实用程序。

Eht*_*ury 6

你在寻找类似tr命令的东西吗?这是联机帮助页。据我所知,它包含在msysgit, 中。cygwingnuwin32 tools

因此,您可以通过执行以下操作在比较之前删除所有空格:

tr --delete '[:space:]' <filename.txt
Run Code Online (Sandbox Code Playgroud)

然后,您可以将该命令的输出提供给diff并使其工作而没有任何空格。

例如,我有一个名为HelloWorldApp.java. 让我向您展示如何tr处理它:

C:\temp>cat HelloWorldApp.java
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
C:\temp>tr -d '[:space:]' <HelloWorldApp.java
classHelloWorldApp{publicstaticvoidmain(String[]args){System.out.println("HelloWorld!");//Displaythestring.}}
Run Code Online (Sandbox Code Playgroud)

  • 这样做的问题是它给了你一行将所有内容混合在一起的信息。如果您尝试将其输入“diff”,“diff”会告诉您每个文件都有一行,并且这些行是不同的。不是很有帮助。 (2认同)
  • @BlacklightShining 好吧,是的,但这*就是*问题所要求的...... (2认同)