선행 공백을 무시하면서 2 개의 파일을 어떻게 비교할 수 있습니까?


81

2 개의 소스 파일이 있는데 동일한 버전이 다릅니다. 그러나 하나는 들여 쓰기를 변경 한 다른 편집기를 통해 이루어 졌으므로 모든 행이 diff에서 다르게 표시됩니다.

출력이 선행 공백 / 탭을 무시한 후 다른 줄만 표시되도록 비교하는 데 사용할 수있는 diff 명령 또는 필터가 있습니까?

답변:


111

diff 유용 할 수있는 몇 가지 옵션이 있습니다.

   -E, --ignore-tab-expansion
          ignore changes due to tab expansion

   -Z, --ignore-trailing-space
          ignore white space at line end

   -b, --ignore-space-change
          ignore changes in the amount of white space

   -w, --ignore-all-space
          ignore all white space

   -B, --ignore-blank-lines
          ignore changes whose lines are all blank

따라서 diff -w old new모든 공백을 무시하고 실질적으로 다른 행만보고해야합니다.


14
그것은의 지적 가치 -w를 효과적으로 비교하기 전에 라인에서 모든 공백을 제거, 그래서 ab하고는 a b동일한 것으로 간주됩니다. 내가 선호 -b가 공백을 무시하기 때문에 변화를 의미, ab그리고 a b다른 간주되지만 a ba+ 여러 공간 + b(죄송합니다, 미니 마크 다운 코드에서 여러 공백을 허용하지 것입니다!) 같은 것으로 간주됩니다.
IpsRich

모든 줄 바꿈을 어떻게 무시할 수 있습니까?
StackOverflowOfficial

3
diffe 및 pi와 같은 초월 적 숫자에 대해 동등한 계열 확장을 무시하도록 말할 수 있습니까 ?
geneorama

@RichardWiseman 좋은 지적; 하지만 탭과 공간 차이가 엉망인 경우를 제외하고 작동하는 좋은 조합이 없습니다 -w. -tb, -tbB, -t, 당신이 선호하는 거라고 약간의 차이가있는 등 모든 누출은 무시한다. -w당신이보고 싶어하는 몇 가지 차이점을 배제 할 수 있더라도 그렇지 않습니다.
TurnipEntropy


0
diff -bB file[12]
-b, --ignore-space-change
      ignore changes in the amount of white space
-B, --ignore-blank-lines
      ignore changes whose lines are all blank

그주의 -w선 같은 옵션이 diffing의 전에 모든 공백을 무시하는 것 this i s a linethis is a line같이 비교 각 파일 thisisaline과 차이점을보고하지 않습니다.

-w옵션 문제 외에도 옵션에도 -b사소한 문제가 있으며 줄을 구걸 할 때 공백을 무시하지 않습니다.

따라서 sed처음에 발생한 공백을 제거 하기 위해 를 사용해야 하고`diff -bB를 수행해야합니다.

diff -bB <(sed 's/^[ \t]*//' file1) <(sed 's/^[ \t]*//' file2)

0

내 오픈 소스 Linux 도구 'dif'는 공백을 포함한 다양한 차이점을 무시하면서 파일을 비교합니다.

주석이나 타임 스탬프를 무시하고, 입력 파일을 정렬하고, 검색 / 바꾸기, 특정 줄을 무시하는 등의 다양한 옵션이 있습니다.

입력 파일을 사전 처리 한 후 이러한 중간 파일에서 Linux 도구 meld, gvimdiff, tkdiff 또는 kompare를 실행합니다.

설치가 필요하지 않습니다. https://github.com/koknat/dif 에서 'dif'실행 파일을 다운로드하여 실행하면됩니다.

공백을 단일 공백으로 압축하려면 -white 옵션을 사용하십시오.

dif file1 file2 -white

모든 공백 (개행 문자 제외)을 제거하려면 -nowhite 옵션을 사용하십시오.

dif file1 file2 -nowhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.