
한 줄만 있는 파일이 있습니다. 크기는 약 20,000바이트입니다.
파일이 수정되었는데 어디에 있는지 알고 싶었습니다.
diff를 사용한다고 생각했는데 차이점이 있는 줄을 출력하기 때문에 완전한 줄이 표시됩니다. 하지만 이 경우에는 파일에서 차이점이 있는 유일한 줄입니다.
그래서 차이점이 무엇인지 알고 싶었습니다.
어떤 충고?
답변1
일반 텍스트처럼 공백이 많다고 가정하면 파일을 단어별로 분할하고 이를 meld와 같은 일반 diff 도구와 비교할 수 있습니다.
tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split
답변2
답변3
이것이 일회성 문제인 경우 \n
50자마다 문자가 삽입된 파일의 복사본을 만든 다음 해당 복사본을 비교합니다. (50을 선택하면 원본 파일의 다른 줄 번호에서 바이트 오프셋까지 계산하기가 쉬워지지만 내가 찾은 내용에 따라 위/아래로 조정할 수 있습니다.)
답변4
예를 들어 한 문자만 다른 긴 줄이 있는 2개의 파일이 있는 경우 출력을 파이프로 연결하여 변경된 줄과 변경 사항을 필터링한 다음 다시 통해 마지막 80개만 표시할 수 있습니다 git diff
. 각 줄의 문자:--word-diff=porcelain
grep
grep
echo {1..4000} A {4001..8000} > a.tmp
echo {1..4000} B {4001..8000} > b.tmp
> git diff -U0 --word-diff=porcelain a.tmp b.tmp | grep -A3 '@@' | egrep -o '.{1,80}$'
@@ -1 +1 @@
3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000
-A
+B