diff는 인라인 차이점만 표시합니다.

diff는 인라인 차이점만 표시합니다.

두 파일의 줄을 비교하고 싶지만 출력의 노이즈를 최소화하기 위해 줄의 실제 차이점만 인쇄하고 싶습니다.

예를 들어 다음 두 파일이 있다고 가정해 보겠습니다.

a.txt

a b c d e f g h i j k l m n o p q r s t u v w x y z

b.txt

a B c d e f g h i j k l m n o p q r s t u v w x y z

(그 차이점은 글자의 대문자 사용입니다 b.)

출력이 다음과 같기를 원합니다.

[-b-]{+B+}

현재 내가 찾은 가장 좋은 방법은 을 사용하는 것이지만 git diff --word-diff전체 줄을 출력합니다.

a [-b-]{+B+} c d e f g h i j k l m n o p q r s t u v w x y z

출력을 수동으로 구문 분석하는 것 외에 더 직접적인 방법이 있습니까? 또한 이상적으로는 git diff사용자가 추가 패키지를 설치할 필요가 없는 POSIX 셸 도구 보다 더 일반적인 것을 사용하는 것을 선호합니다 .

답변1

사용차이점:

$ wdiff -3 a.txt b.txt

======================================================================
 [-b-] {+B+}
======================================================================

-3or 옵션은 ---no-common두 파일 사이의 공통 단어를 제거하고 차이점만 표시합니다.

배너 ===...(및 빈 줄)는 다음 방법으로 제거할 수 있습니다 grep.

$ wdiff -3 a.txt b.txt | grep -vx '=*'
 [-b-] {+B+}

wdiffdiffor 옵션을 지정하면 -d균일한 데이터를 읽을 수도 있습니다 --diff-input. 예 git:

git diff somefile | wdiff -d -3

POSIX 도구 는 아니지만 wdiff일반적으로 사용됩니다.

관련 정보