실제로 공백을 완전히 무시하는 차이점

실제로 공백을 완전히 무시하는 차이점

두 파일을 비교하고 실제로 모든 공백을 무시하는 응용 프로그램을 찾고 있습니다. 예를 들면 다음과 같습니다.

class foo { 
  bar
  spaz 
}

와 동등하다

class foo{bar spaz}

아니면, 그것도

classfoo { 
  barspaz}

하지만

classfoo { 
  spazspaz
}

즉, 이전 예가 다른 예에서 spaz대신되었음을 보여줍니다 . bar2개의 파일만 비교하면 됩니다.

  • Windows 또는 linux/unix/posix 호환 유틸리티일 수 있습니다.
  • lin/unix 명령을 시도했는데 diff -w차이점이 있는 경우에만 공백을 무시합니다.줄당공백입니다. 옵션이 표시되지 않습니다.완전히공백을 무시하십시오.
  • 또한 무료가 아닌 Windows용 비교 유틸리티인 UECompare 또는 Ultracompare도 사용해 보았습니다.

답변1

명령 과 같은 것을 찾고 있습니까 tr? 다음은맨페이지. 내가 아는 한 msysgit, cygwin및 에 포함되어 있습니다 .gnuwin32 tools

따라서 다음과 같은 작업을 수행하여 비교하기 전에 모든 공백을 제거할 수 있습니다.

tr --delete '[:space:]' <filename.txt

그런 다음 해당 명령의 출력을 공급하여 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.}}

답변2

라인 지향임에도 불구하고 diff~할 수 있었다요청한 것을 수행하도록 만들어졌습니다. 대략적으로 diff -w를 수행한 다음 diff 출력을 사후 처리할 수 있습니다. diff 출력을 보고 다양한 행 쌍을 결합하여 (현재) 다른 파일의 행과 일치하는지 확인할 수 있습니다.

O(n^2) 또는 기타 불쾌한 일인 것처럼 보이지만 자체적으로 조인 없음, 2줄 조인, 파일에서 3줄 조인 1 X 조인 없음, 조인으로 제한한다면 여전히 매우 도움이 될 것입니다. 2줄, diff 출력의 움직이는 "창"에서 파일 2의 3줄을 결합합니다. (여기서 X는 ~ "교차곱"입니다)

실제로 Perl diff 출력 후처리 스크립트가 몇 시간의 작업으로 수행할 수 있는 작업처럼 보입니다((Perl) 프로그래밍 기술에 따라 다름)

어쩌면 직장에서 별로 하고 싶지 않은 일이 있을 때... :-)

관련 정보