삽입하거나 삭제하지 않고 두 파일을 한 줄씩 엄격하게 비교


14

본질적으로 16 진수 형식의 메모리 덤프가 포함 된 두 개의 파일이 있습니다. 현재 diff를 사용하여 파일이 다르고 차이점이 있는지 확인합니다. 그러나 차이의 정확한 위치 (예 : 메모리 주소)를 확인할 때 잘못된 결과를 초래할 수 있습니다. 두 파일을 나란히 보여주는 다음 예제를 고려하십시오.

file1:       file2:

0001    |    0001
ABCD    |    FFFF
1234    |    ABCD
FFFF    |    1234

diff -u두 파일간에 3 줄 (메모리 위치)이 변경되었지만 이제는 한 번의 삽입과 한 번의 삭제가 표시됩니다.

 0001
+FFFF
 ABCD
 1234
-FFFF

각 파일이 다른 파일에서 같은 줄 (행 번호 지정)로만 비교되도록 두 파일을 비교하는 쉬운 방법이 있습니까? 따라서이 예에서 마지막 세 줄이 변경된에서 라인과 함께 변경된 것을보고해야 file1하고 file2. 출력은 diff 스타일 일 필요는 없지만 색칠 할 수 있으면 시원합니다 (현재 쉽게 조정할 수 있도록 diff -u출력 색상을 지정하는 순간 sed).

답변:


19

이것은 접근 방식이 될 수 있습니다.

diff <(nl file1) <(nl file2)

nl번호 라인 diff선을 인식하고는 라인으로 라인.


3
멋지다, 나는 nl 프로그램을 몰랐다. 이 유닉스 도구는 정말 편리하지만 너무 많습니다 .
프리츠

1
방금 시도한 결과 불행하게도 첫 번째 파일의 모든 줄, 두 번째 파일의 모든 줄 ... 파일 1의 줄 1 대신 파일 2의 줄 1, 줄 2 파일 1에서, 파일 2에서 라인 2가 이어집니다.
Michael Hewson

@MichaelHewson 두 파일에 공통 줄이없는 것 같습니다. 이 경우 diff작동 방식이 그대로입니다. meld두 파일을 나란히 보여주는 gui 프로그램 을 사용해보십시오 . 로meld <(nl file1) <(nl file2)
프리츠
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.