두 텍스트 파일을 비교하고 무엇이 바뀌었는지 확인하는 방법
두 텍스트 파일을 비교하는 가장 빠른 방법은 두 파일을 나란히 보여주는 diff 도구에 붙여넣고 강조 표시된 줄을 읽는 것입니다. 추가된 부분은 초록색, 제거된 부분은 빨간색으로 표시되며, 변경된 줄은 두 색이 함께 나타납니다. 설치도 업로드도 필요 없고, 몇 초면 끝납니다.
이것으로 대부분의 경우가 해결됩니다. 하지만 화면에서 동일하게 읽히는 두 파일이라도 바이트 단위로는 서로 다를 수 있고, 바로 그 지점에서 사람들이 오후 시간을 통째로 날립니다. 이 가이드에서는 빠른 방법, 실제 예제, 알아둘 만한 눈에 보이지 않는 차이, 그리고 ChatGPT 같은 AI 챗봇이 실제로 도움이 되는 경우를 보여줍니다. 도구만 필요하다면 텍스트 비교 페이지에서 전체 작업을 브라우저 안에서 처리할 수 있습니다.
"두 텍스트 파일을 비교한다"는 것이 실제로 의미하는 것
텍스트 파일은 줄로 나뉜 문자의 나열입니다. 두 파일을 비교한다는 것은 일치하는 부분을 맞춰 놓고 일치하지 않는 부분을 표시하는 것을 뜻합니다. 이를 위한 고전적인 도구가 Unix의 diff 유틸리티이며, 저희 것을 포함한 모든 현대적인 diff 뷰어는 같은 작업을 더 친숙한 표시 방식으로 수행합니다.
대부분의 diff 도구는 먼저 줄 단위로 동작합니다. 이렇게 하면 긴 파일에서도 빠르고, 사람이 읽는 방식과도 맞습니다. 이동한 줄을 훑어본 다음, 그 안에서 바뀐 단어를 찾는 식이죠. 저희 엔진은 Google의 diff-match-patch 를 기반으로 하며, 개별 문자를 보기 전에 줄 모드 패스를 실행하기 때문에 천 줄짜리 로그도 즉시 diff됩니다.
두 텍스트 파일을 비교하는 방법들
정답인 단 하나의 방법은 없습니다. 파일이 어디에 있는지, 그리고 얼마나 정확해야 하는지에 따라 달라집니다.
| 방법 | 적합한 경우 | 정확한가? | 수고 |
|---|---|---|---|
| 나란히 놓고 읽기 | 몇 줄, 명백한 하나의 수정 | 판단은 당신 몫 | 낮음 |
| 온라인 diff 도구 | 빠른 확인, 어디서든 붙여넣기 | 예, 문자 단위로 정확 | 낮음 |
명령줄(diff, git diff) | 디스크 위의 파일, 스크립팅, 거대한 파일 | 예 | 보통 |
| 코드 편집기(VS Code "비교") | 이미 편집기에 열려 있는 파일 | 예 | 낮음 |
| AI 챗봇(ChatGPT) | 변경 내용을 쉬운 말로 요약 | 아니요, 놓치거나 표현을 바꿀 수 있음 | 낮음 |
일회성 확인이라면, 설치할 것이 없고 이메일, 로그, 코드 리뷰에서 바로 붙여넣을 수 있어 브라우저 도구가 속도에서 앞섭니다. 이미 저장소에서 추적 중인 파일이라면 git diff가 바로 거기 있습니다. AI 옵션은 나중에 다시 다룹니다. 맞는 작업에는 정말 유용하지만 맞지 않는 작업에서는 함정이기 때문입니다.
브라우저에서 두 텍스트 파일 비교하기, 단계별로
누군가 문서의 두 버전을 보내며 "뭐가 달라?"라고 물을 때 쓰는 루틴입니다. 약 10초면 됩니다.
- 텍스트 비교 도구를 엽니다.
- 왼쪽에 원본을, 오른쪽에 새 버전을 붙여넣습니다. 또는 업로드로 디스크에서 파일을 바로 불러옵니다.
- 강조 표시를 읽습니다. 추가된 줄은 초록색, 제거된 줄은 빨간색, 변경된 줄은 빨강·초록 쌍으로 나타납니다.
- 변경된 줄을 스크롤합니다. 각 줄 안에서 서로 다른 정확한 단어가 표시되므로 줄 전체를 다시 읽지 않아도 됩니다.
- 두 파일이 예상보다 훨씬 더 달라 보인다면 아래의 눈에 보이지 않는 차이 섹션으로 넘어가세요.
실제 예제
동료가 편집한 문단을 돌려보내며 변경 사항을 확인해 달라고 했다고 합시다. 여기 당신의 원본이 있습니다:
The service starts at 9am on weekdays.
Refunds are processed within 14 days.
Contact [email protected] for help.
그리고 여기 동료의 버전이 있습니다:
The service starts at 8am on weekdays.
Refunds are processed within 30 days.
Contact [email protected] for help.
Priority support is available on request.
두 파일을 diff에 넣으면, 산문에서는 훑고 지나가기 쉽지만 실제 이야기는 짧습니다:
| 줄 | 이전 | 이후 | 변경 |
|---|---|---|---|
| 시작 시간 | 9am | 8am | 변경됨 |
| 환불 기간 | 14 days | 30 days | 변경됨 |
| 지원 창구 | [email protected] | [email protected] | 변경 없음 |
| 우선 지원 | 없음 | Priority support is available on request. | 추가됨 |
두 숫자가 바뀌었고 한 문장이 추가되었습니다. 환불 기간이 14일에서 30일로 두 배가 되는 이런 편집은 배포 전에 잡아내고 싶은 종류이고, 한 글자 차이로 눈에 안 띄게 지나칠 뻔합니다. 이것이 눈을 믿는 대신 텍스트를 diff하는 이유의 전부입니다.
사람들이 걸려 넘어지는 눈에 보이지 않는 차이
때때로 diff는 화면에서 동일해 보이는 두 파일을 완전히 다른 것으로 그려냅니다. 원인은 거의 언제나 볼 수 없는 문자입니다. 흔한 용의자들을 소개합니다.
| 눈에 보이지 않는 차이 | 어디서 오는가 | 대처법 |
|---|---|---|
| 줄바꿈 문자: CRLF vs LF | 한 파일은 Windows에서, 다른 파일은 macOS나 Linux에서 저장됨 | 줄바꿈 문자를 정규화한다. 줄바꿈 규칙 참고 |
| 뒤쪽 공백 | 줄 끝에 남은 스페이스나 탭 | 뒤쪽 공백을 잘라내거나, 도구가 가능하면 무시한다 |
| 바이트 순서 표식(BOM) | 편집기가 첫 줄에 보이지 않는 표식을 추가함 | BOM 없이 UTF-8로 저장한다 |
| 탭 vs 스페이스 | 서로 다른 편집기나 들여쓰기 설정 | 하나를 골라 변환한다. 화면에서는 둘 다 똑같이 보인다 |
| 텍스트 인코딩 | 한 파일은 UTF-8, 다른 파일은 Latin-1이라 악센트 문자의 바이트가 다름 | 둘 다 UTF-8로 다시 저장한다 |
| 줄바꿈 없는 공백 | 웹 페이지나 워드프로세서에서 붙여넣음 | 일반 스페이스로 찾아 바꾼다 |
가장 크게 물어뜯는 것은 줄바꿈 문자입니다. Windows 파일은 모든 줄 끝에 캐리지 리턴에 라인 피드를 더한(CRLF) 것을 쓰고, Mac이나 Linux 파일은 라인 피드(LF)만 씁니다. 둘을 같은 편집기에서 열면 똑같아 보이지만, 모든 줄이 바이트 수준에서 다르기 때문에 순진한 diff는 크리스마스 트리처럼 불이 켜집니다. 파일 전체가 변경된 것으로 표시된다면 이것부터 확인하세요.
ChatGPT가 두 파일을 비교할 수 있나요?
할 수 있고, 이제 많은 사람이 바로 그렇게 합니다. 두 버전을 ChatGPT (또는 다른 AI 어시스턴트)에 붙여넣고 "뭐가 바뀌었어?"라고 묻는 것이죠. 짧은 파일에서는 잘 작동하고, 평범한 diff가 할 수 없는 것을 줍니다. 바로 일상 언어로 된 요약입니다. "환불 기간이 14일에서 30일로 바뀌었고 우선 지원 줄이 추가되었다"는 설명은 빨강과 초록의 벽보다 바쁜 독자에게 더 유용할 때가 많습니다.
함정은 정밀도입니다. 언어 모델은 diff 알고리즘이 아닙니다. 한 글자 변경을 놓치거나, 요약하면서 슬쩍 줄을 다시 쓰거나, 긴 파일에서 공간이 부족해 중간을 건너뛸 수 있습니다. 또한 텍스트를 제3자에게 넘기는 일이기도 하니, 민감한 내용이라면 원치 않을 수 있습니다. 그러니 이 두 종류의 도구는 경쟁자가 아니라 서로를 보완합니다.
좋은 워크플로: 먼저 파일을 결정론적인 diff 도구에 통과시켜 정확하고 문자 단위로 맞는 변경 목록을 얻은 다음, 그 짧은 목록을 AI 챗봇에 붙여넣어 영향을 쉬운 말로 설명하게 하세요. diff의 정확성과 요약의 가독성을 함께 얻으면서, 어느 한쪽에 다른 쪽의 일을 맡기지 않아도 됩니다.
명령줄에서 파일 비교하기
파일이 이미 디스크에 있다면, 내장된
diff 명령은 한 줄입니다:
diff old.txt new.txt
Git이 쓰는 통합 형식에는 -u를, 공백 차이를 무시하려면
-w를 추가합니다. 저장소 안의 파일이라면
git diff old.txt new.txt가 같은 일을 색상과 단어 수준 강조로 해줍니다.
브라우저 도구는 이것의 터미널이 필요 없는 버전입니다. 붙여넣고, 읽고, 끝.
관련 도구
비교하는 것이 순수 텍스트뿐인 경우는 드뭅니다. 파일이 구조화되어 있다면 형식을 인식하는 뷰가 더 잘 읽힙니다. JSON 비교는 순서가 바뀐 키와 들여쓰기 노이즈를 처리하고, CSV 비교는 행과 열을 맞춥니다. diff하기 전에 지저분한 목록을 정리하는 일은 중복 줄 제거와 줄 정렬의 몫입니다.
자주 묻는 질문
- 텍스트 파일을 온라인으로 비교하면 어딘가에 업로드되나요?
- comparetext.org에서는 비교가 브라우저에서 실행됩니다. 두 파일 모두 당신 자신의 기기에서 JavaScript로 diff되므로, 저장이나 공유를 의도적으로 클릭하지 않는 한 서버로 아무것도 전송되지 않습니다. 그래서 초안, 계약서, 설정 파일, 그리고 키를 누를 때마다 업로드하는 사이트에 붙여넣고 싶지 않은 모든 것에 안전합니다.
- 제 두 텍스트 파일이 모든 줄이 다르다고 표시되는 이유는 무엇인가요?
- 거의 언제나 줄바꿈 문자 때문입니다. 한 파일은 Windows(CRLF)에서, 다른 파일은 macOS나 Linux(LF)에서 저장되어, 동일해 보여도 모든 줄이 바이트 수준에서 다릅니다. 첫 줄의 숨겨진 바이트 순서 표식(BOM)이나 탭 대 스페이스도 같은 결과를 낼 수 있습니다. 줄바꿈 문자를 정규화하고 둘 다 UTF-8로 다시 저장한 뒤 다시 diff하세요.
- 아무것도 설치하지 않고 두 텍스트 파일을 비교할 수 있나요?
- 네. 텍스트 비교 도구를 열고 한 파일을 왼쪽에, 다른 파일을 오른쪽에 붙여넣거나, 업로드를 사용해 디스크에서 불러옵니다. diff는 변경된 줄이 강조된 채로 브라우저 안에서 즉시 나타납니다. 다운로드할 것도, 만들 계정도 없습니다.
- ChatGPT가 저를 위해 두 파일을 비교해 줄 수 있나요?
- 할 수 있고, 짧은 파일에서 무엇이 바뀌었는지 쉬운 말로 요약하는 데 편리합니다. 하지만 언어 모델은 diff 알고리즘이 아닙니다. 작은 편집을 놓치거나, 요약하면서 줄을 다시 쓰거나, 긴 파일의 중간을 건너뛸 수 있습니다. 정확하고 문자 단위로 맞는 비교에는 diff 도구를 쓰고, 말로 설명받고 싶다면 그 결과를 AI에 넘기세요.
- 두 파일을 비교하면서 공백을 무시하려면 어떻게 하나요?
- 명령줄에서는
diff -w old.txt new.txt가 공백 차이를 무시하고,diff -b가 공백의 양 변화를 무시합니다. 브라우저에서는 붙여넣기 전에 뒤쪽 스페이스를 잘라내고 줄바꿈 문자를 정규화하세요. 그것들이 diff를 가장 자주 어지럽히는 공백 변경이기 때문입니다. 목표는 의미를 바꾸는 편집만 남기는 것입니다. - 텍스트 비교와 코드 비교의 차이는 무엇인가요?
- 작동 방식은 같습니다. 둘 다 일치하는 줄을 맞추고 나머지를 표시합니다. 차이는 무엇을 진짜 변경으로 치느냐입니다. 산문에서는 단어 하나만 옮겨져도 문단이 재배치되면 큰 편집처럼 보일 수 있습니다. 코드에서는 들여쓰기와 옮겨진 함수가 중요합니다. JSON 비교 같은 형식 인식 뷰나 언어 인식 편집기는 구조화된 파일의 그 노이즈를 줄여줍니다.
한번 써보시겠어요? 두 파일을 텍스트 비교 도구에 붙여넣고 무엇이 바뀌었는지 확인하세요.