텍스트 비교(Diff)
두 텍스트를 줄 단위로 비교해 추가되거나 삭제된 줄과 각 줄 안에서 바뀐 부분을 확인하고, 결과를 unified diff로 복사합니다.
도구를 여기에 고정하세요. 이 브라우저에 저장됩니다.
도구를 고정하면 그 스티커가 여기에 붙습니다.
두 텍스트를 줄 단위로 비교해 추가되거나 삭제된 줄과 각 줄 안에서 바뀐 부분을 확인하고, 결과를 unified diff로 복사합니다.
비교는 첫 번째 텍스트를 두 번째 텍스트로 바꾸는, 지울 줄과 추가할 줄의 가장 짧은 목록을 찾습니다. 이 목록을 찾는 것은 최장 공통 부분 수열, 즉 두 텍스트에 같은 순서로 나타나는 가장 긴 줄의 나열을 찾는 문제와 같습니다. 이 도구는 Eugene Myers가 1986년에 발표한 알고리즘을 선형 공간 방식으로 사용합니다. GNU diff의 바탕이 되고 Git의 기본값이기도 한 알고리즘이며, 메모리 사용량이 텍스트 크기에 비례하는 수준으로 유지됩니다.
변경 블록 안의 같은 위치에 삭제된 줄과 추가된 줄이 있으면, 두 줄을 다시 단어 단위로 비교해 다른 단어를 강조합니다. 두 줄에 공통점이 거의 없으면 단순한 삭제와 추가로 표시합니다. 거의 모든 부분을 강조하면 아무것도 알려 주지 못하기 때문입니다.
− 표시가 붙은 줄은 원본 텍스트에만 있고, + 표시가 붙은 줄은 변경된 텍스트에만 있습니다. 따라서 바뀐 줄은 한 번은 삭제로, 한 번은 추가로 두 번 나타납니다. 두 열의 숫자는 원본과 변경된 텍스트의 줄 번호입니다. 의미는 표시 기호가 전달하고, 색은 그것을 한 번 더 보여 줄 뿐입니다.
통합 보기는 모든 내용을 한 열에 보여 주며, 패치 파일과 같은 순서를 따릅니다. 나란히 보기는 각 텍스트를 별도의 열에 두고 서로 대응하는 줄을 맞춰 정렬합니다.
unified diff로 복사는 diff -u와 git diff의 형식을 만듭니다. 변경 사항은 앞뒤로 변경 없는 줄 세 개를 문맥으로 붙인 헝크(hunk)로 묶입니다. 각 헝크는 @@ -1,7 +1,8 @@ 같은 헤더로 시작하며, 이는 원본의 1번째 줄부터 일곱 줄이 변경된 텍스트의 1번째 줄부터 여덟 줄에 대응한다는 뜻입니다.
\ No newline at end of file 줄은 형식의 일부입니다. 텍스트가 줄바꿈으로 끝나지 않을 때 나타나며, 패치가 파일을 정확히 재현할 수 있게 해 줍니다. 페이지의 보기에서는 이 차이를 무시합니다. 똑같아 보이는 마지막 줄을 바뀌었다고 표시해서는 안 되기 때문입니다.
아니요. 비교는 브라우저 탭의 JavaScript가 처리합니다. 이 도구는 붙여 넣은 내용으로 네트워크 요청을 보내지 않으며, 사이트의 보안 정책이 다른 호스트로 가는 요청을 차단합니다.
대개 눈에 보이지 않는 차이입니다. 줄 끝의 공백, 공백 대신 쓴 탭, 줄바꿈 없는 공백(non-breaking space), 또는 한 글자가 아니라 두 글자로 저장된 악센트 문자 등입니다. 공백 변경 무시 옵션을 켜면 앞의 세 가지는 원인에서 제외할 수 있습니다.
네. 파일로 저장한 다음 바꿀 파일의 이름을 넣어 patch를 실행하세요. 예: patch notes.txt changes.diff. 무시 옵션을 켠 채로 diff를 복사했다면 무시된 차이는 diff에 들어 있지 않으므로, 패치한 파일이 변경된 텍스트와 정확히 일치하지 않습니다.
수천 줄 정도의 텍스트는 1초도 걸리지 않고 비교됩니다. 페이지에는 최대 5,000행까지만 표시하지만, 복사한 diff에는 항상 모든 변경이 들어 있습니다. 공통점이 거의 없는 매우 긴 두 텍스트는 탐색이 중간에 끝나므로 결과가 필요 이상으로 길어질 수 있습니다.
별도의 창에서 열리며 오프라인에서도 계속 작동합니다.
설치하려면 공유 버튼을 누른 다음 “홈 화면에 추가”를 선택하세요.