긴 한 줄 파일에 diff 사용


25

한 줄만있는 파일이 있습니다. 크기는 약 20,000 바이트입니다.

파일이 수정되었으며 어디에 있는지 알고 싶었습니다.

diff를 사용한다고 생각했지만 차이점이있는 줄을 출력하기 때문에 완전한 줄을 보여줍니다. 그러나이 경우 파일의 유일한 줄이 다릅니다.

그래서 차이점이 무엇인지보고 싶었습니다.

어떤 충고?


3
단어별로 차이가 있습니까? manpages.ubuntu.com/manpages/lucid/man1/wdiff.1.html
VenkatH

2
fmt로 파이핑을 시도해 보았습니까 (물론 리눅스를 사용하는 경우) "fmt -w 50 long.txt | diff"
l1zard

답변:


13

일반 텍스트에서와 같이 많은 공백이 있다고 가정하면 파일을 단어로 나누고 일반적인 diff 도구 (예 : meld)와 비교할 수 있습니다.

tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split

2
나에게 가장 간단한 해결책 인 것 같습니다. diff 문제 자체는 사소한 것이지만 diff 도구뿐만 아니라 대부분의 도구는 긴 줄을 관리 할 수 ​​없으므로 문제는 diffing 자체가 아닌 긴 줄을 처리하는 것입니다.
p1100i 2019

4

인라인 라인 차이를 수행하는 diff를 찾았습니다. 내가 사용 xxdiff UNIX에. WinMerge 는 Windows에서 인라인 차이를 수행 한다고 생각 합니다.

다른 대답도 좋습니다 : wdiff 또는 청크로 구분-파이프 또는 쉼표로 데이터를 구분하면 청크 경계를 쉽게 정의 할 수 있습니다.


1
참고로, 줄이 32768 자보다 길면 xxdiff segfaults ...
ValarDohaeris

3

이 문제가 한 번만 발생하면 \n50 자마다 문자가 삽입 된 파일의 복사본을 만든 다음 해당 복사본을 복사합니다. (원래 파일의 다른 행 번호에서 바이트 오프셋으로 수학을 쉽게 진행할 수 있기 때문에 50을 선택했지만 찾은 내용에 따라 위 / 아래를 조정할 수 있습니다.)

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