중복 행 제거 도구: 완전 가이드
텍스트에서 중복 행을 즉시 제거. exact 및 fuzzy 매칭, 대소문자 구분 설정이 지원되는 브라우저 기반 도구.
Duplicate Line Remover란?
Duplicate Line Remover는 텍스트 블록을 스캔하여 반복된 행을 식별하고, 원래 순서를 유지하면서 고유한 행만 반환하는 브라우저 기반 도구입니다. 두 가지 매칭 모드를 제공합니다: exact 매칭(대소문자 구분 선택 토글 포함)과 fuzzy 매칭(Fuse.js를 통해 유사하지만 동일하지 않은 행을 그룹화). 통계 패널에는 원본 행 수, 고유 행 수, 제거된 행 수가 표시되어 한눈에 결과를 확인할 수 있습니다. 내보낸 목록을 정리하는 데이터 분석가, 설정 항목을 중복 제거하는 개발자, 실수로 반복된 단락을 제거하는 작가 등이 스크립트 없이 깔끔한 결과가 필요할 때 이 도구를 사용합니다. 모든 처리는 브라우저에서 실행됩니다. 서버로는 아무것도 전송되지 않으며, 페이지가 한 번 로드되면 오프라인에서도 작동합니다.
주요 기능
- 중복 행 제거 — 반복된 행을 제거하고 각 행의 첫 번째 등장만 반환합니다.
- 대소문자 구분 비교 — 기본적으로 활성화됩니다. "Apple"과 "apple"은 서로 다른 행으로 처리됩니다.
- 대소문자 구분 없는 비교 — Case Sensitive 옵션을 해제하면 "Apple"과 "apple"이 중복으로 처리되어 처음 등장한 것만 유지됩니다.
- Exact 매칭 모드 — 대소문자 설정에 따라 행이 동일해야 중복으로 간주됩니다.
- Fuzzy 매칭 모드 — Fuse.js를 사용하여 유사하지만 동일하지 않은 행을 그룹화합니다. 임계값 슬라이더(0.1~0.9)가 "strict", "moderate", "loose" 레이블로 그룹화 강도를 조절합니다.
- Fuzzy 그룹 리뷰 UI — fuzzy 모드에서 "Detect Fuzzy"를 클릭하면 각 중복 그룹이 카드로 표시됩니다. 유지하고 싶은 행 버전을 클릭한 후 중복 제거된 결과를 복사합니다.
- 제거 통계 — 3개의 통계 카드가 Original Lines, Unique Lines, Removed 수를 실시간(exact 모드) 또는 감지 후(fuzzy 모드)에 표시합니다.
- 배치 모드 — 프리미엄 기능. 한 줄씩 제출된 여러 독립적인 텍스트 블록에 중복 제거를 적용합니다.
- 복사 및 지우기 버튼 — 고유 행 출력을 원클릭으로 클립보드에 복사하고 텍스트 영역을 초기화합니다.
- 프리셋 및 기록 지원 — 프리미엄 기능. 대소문자 구분 설정을 저장하고 이전 작업을 기록합니다.
Duplicate Line Remover 사용 방법
1단계: 도구 열기
Duplicate Line Remover로 이동합니다. 상단에 옵션 영역이 표시되며, "Case Sensitive" 체크박스(기본적으로 체크됨), 3개의 통계 카드(Original Lines, Unique Lines, Removed), Exact Match와 Fuzzy Match 간의 모드 전환이 있습니다.
2단계: 매칭 모드 선택
정확한 중복의 경우: 모드를 "Exact Match"로 유지합니다. 대소문자가 중요한지 결정합니다:
Error와error를 별도 행으로 유지하려면 "Case Sensitive"를 체크된 상태로 둡니다.Error와error를 같은 행으로 처리하려면 체크를 해제합니다.
유사 중복의 경우: "Fuzzy Match"를 클릭합니다. 임계값 슬라이더가 나타납니다. 낮은 값(0.1~0.2, "strict" 레이블)은 한 글자 차이나 가벼운 오타가 있는 행만 그룹화합니다. 높은 값(0.7~0.9, "loose" 레이블)은 일반적인 유사성이 있는 행을 그룹화합니다. 기본값은 0.3(moderate)입니다.
3단계: 텍스트 붙여넣기
입력 텍스트 영역을 클릭하고 내용을 붙여넣습니다. exact 매칭 모드에서는 오른쪽 출력 패널과 3개의 통계 카드가 즉시 업데이트됩니다. 도구가 중복을 식별하면서 Removed 카운트가 증가하는 것을 볼 수 있습니다.
입력 예시(exact 매칭, 대소문자 구분):
apple
banana
Apple
apple
cherry
banana
출력:
apple
banana
Apple
cherry
통계 카드: Original Lines: 6, Unique Lines: 4, Removed: 2
원래 순서가 유지됩니다. 각 행의 첫 번째 등장이 보존됩니다.
4단계: Fuzzy 그룹 확인(Fuzzy 모드만)
fuzzy 모드에서는 텍스트를 붙여넣은 후 "Detect Fuzzy"를 클릭합니다. 도구는 Fuse.js를 사용하여 임계값 이하의 문자열 거리 점수를 가진 행을 그룹화합니다. 그룹은 앰버 테두리 카드로 표시됩니다. 각 카드에는 유사한 모든 행이 표시됩니다. 보라색으로 강조된 행은 "keep"으로 표시되고 나머지는 "drop"으로 표시됩니다. 그룹의 임의 행을 클릭하여 유지할 버전을 변경합니다. 유사한 일치가 없는 행은 이미 고유한 행으로 별도로 표시됩니다.
선택에 만족하면 "Copy Deduplicated Text"를 클릭하여 결과를 클립보드에 복사합니다.
5단계: 결과 복사(Exact 모드)
exact 매칭 모드에서는 "Copy Result"를 클릭하여 고유 행 출력을 클립보드에 복사합니다. 토스트 알림이 성공을 확인합니다. 서포터인 경우 복사 작업이 도구 기록에 작업을 기록합니다("Removed N duplicates"가 기록 레이블로 표시).
실용적인 예시
이메일 목록 정리
두 개의 다른 소스에서 메일링 목록을 내보내 연결합니다. 병합된 목록에는 수백 개의 중복이 포함됩니다. 도구에 전체 목록을 붙여넣고 "Case Sensitive"를 해제하면(일부 주소는 대소문자만 다를 수 있으므로), 출력 패널에 즉시 중복 제거된 목록이 표시됩니다. Removed 통계 카드는 정확히 몇 개의 항목이 제거되었는지 알려줍니다.
로그 항목 중복 제거
같은 오류가 매초 여러 번 발생해 로그 파일에 반복된 행이 있습니다. 관련 로그 행을 붙여넣고 Case Sensitive를 활성화한 채로(로그 행은 대소문자를 정확히 구분합니다) exact 매칭으로 전환합니다. 출력은 각 반복 오류의 첫 번째 등장만 유지하여 조사할 개별 오류 메시지의 간결한 목록을 제공합니다.
유사한 설문 응답 정리
응답자들이 유사한 자유 텍스트 답변을 제출합니다: "Good", "good.", "Good!", "Great", "great". fuzzy 매칭으로 전환하고 임계값을 0.3 정도로 설정하고 "Detect Fuzzy"를 클릭합니다. 도구는 "Good", "good.", "Good!"을 유사한 것으로 그룹화하고 어떤 버전을 유지할지 선택할 수 있게 합니다. "Great"와 "great"는 별도로 그룹화될 수 있습니다. 각 클러스터를 검토하고 정리된 결과를 복사합니다.
팁과 모범 사례
Exact 모드는 원래 순서를 유지합니다. 행은 입력에서 처음 등장한 순서로 반환됩니다. 사용 사례에서 행 순서가 중요한 경우(순위 목록, 단계 순서), 정렬 부작용을 걱정하지 않고 exact 모드를 안전하게 사용할 수 있습니다.
대소문자 구분이 기본적으로 활성화되는 데는 이유가 있습니다. 대부분의 기술 데이터(파일 경로, 설정 키, URL)는 대소문자를 구분합니다. 기본값은 겉으로만 유사해 보이는 행이 실수로 병합되는 것을 방지합니다. 대소문자 차이가 의미 없다고 확신할 때만 비활성화하세요.
strict한 fuzzy 임계값부터 시작하고 점차 완화합니다. 임계값 0.1(strict)에서는 거의 동일한 행만 그룹화됩니다. 임계값 0.9(loose)에서는 관련 없는 행이 그룹화될 수 있습니다. 0.1 또는 0.2에서 시작하여 그룹을 검토하고, 더 넓은 그룹화가 필요할 때만 임계값을 높입니다.
fuzzy 모드에서는 유지할 버전을 선택합니다. 이것이 exact 모드와의 핵심 차이점입니다. fuzzy 모드는 유사 중복의 "최선의" 버전을 자동으로 선택할 수 없습니다. 클러스터를 보여주고 결정하게 합니다. 결과를 복사하기 전에 각 그룹을 읽는 시간을 가지세요.
빈 행은 중요합니다. 빈 행은 별개의 행입니다. 입력에 여러 빈 행이 포함된 경우, exact 매칭 모드에서는 하나의 빈 행으로 중복 제거됩니다. 모든 빈 행을 제거하려면 먼저 텍스트 클리너 도구를 사용하세요.
일반적인 문제 및 문제 해결
Removed 카운트가 0에 머물러 있습니다. 중복이 감지되지 않으면 대소문자 구분 설정이 데이터에 맞는지 확인하세요. "apple"과 "Apple"이 중복으로 카운트되어야 한다면 "Case Sensitive"를 해제하세요. 동일해 보이는 행에 후행 공백이나 다른 줄 끝 문자가 포함되어 있는지도 확인하세요. 도구는 exact 모드에서 정확한 문자 시퀀스를 비교합니다.
fuzzy 모드에서 예상한 중복이 감지되지 않습니다. 임계값 슬라이더를 내립니다. 0.3 임계값은 중간 수준입니다. 더 일반적으로 유사한 행을 캡처하려면 0.5 이상을 시도하세요. 매우 짧은 행(한두 글자)은 작은 변경이 길이의 큰 비율을 차지하기 때문에 fuzzy 매칭이 어렵다는 점에 유의하세요.
텍스트가 있는데도 출력이 비어 있습니다. exact 모드에서는 각 행의 최소 한 번의 등장이 항상 유지되므로 이런 상황은 발생하지 않아야 합니다. 빈 출력 영역이 표시되면 입력 텍스트 영역에 실제로 텍스트가 포함되어 있는지, 그리고 exact 매칭 모드인지 확인하세요(fuzzy 모드는 오른쪽 출력 패널을 채우지 않고 대신 그룹 카드를 표시합니다).
배치 모드: 결과 행이 하나만 표시됩니다. 배치 모드는 배치 입력의 각 행을 중복 제거할 독립적인 텍스트 블록으로 처리합니다. 배치 입력이 한 줄이면 한 행의 결과를 얻습니다. 여러 블록을 처리하려면 독립적인 블록 사이에 줄 바꿈을 추가하세요.
"Detect Fuzzy" 버튼이 회색으로 표시됩니다. 이 버튼은 fuzzy 모드에서만 사용 가능하며 비어 있지 않은 입력이 필요합니다. 모드 전환을 "Fuzzy Match"로 전환하고 입력 텍스트 영역에 공백이 아닌 행이 최소 하나 포함되어 있는지 확인하세요.
개인 정보 보호 및 보안
모든 중복 제거 처리는 브라우저 내에서 완전히 실행됩니다. exact 모드에서 removeDuplicateLines 함수는 붙여넣은 텍스트에 대해 네트워크 활동 없이 동기적으로 작동합니다. fuzzy 모드에서는 처음으로 fuzzy 감지를 실행할 때 Fuse.js 라이브러리가 동적 임포트로 로드됩니다. 이것은 라이브러리 코드의 일회성 다운로드이며, 텍스트의 다운로드가 아닙니다. 텍스트는 어디에도 전송되지 않습니다. 도구는 초기 페이지 로드 후(exact 모드), 그리고 Fuse.js가 한 번 다운로드된 후(fuzzy 모드) 오프라인에서 작동합니다.
자주 묻는 질문
Duplicate Line Remover는 무료인가요? 네. 핵심 중복 제거 기능(exact 매칭, 대소문자 구분 전환, 통계, 클립보드 복사)은 계정 없이 완전히 무료입니다.
오프라인에서 작동하나요? 페이지가 로드된 후 exact 모드에서 작동합니다. fuzzy 모드는 Fuse.js 라이브러리의 일회성 다운로드가 필요합니다. 그 다운로드 후에는 오프라인에서도 작동합니다.
내 텍스트가 저장되거나 서버로 전송되나요? 아니요. 텍스트는 브라우저를 벗어나지 않습니다. 중복 제거 알고리즘은 기기의 JavaScript에서 실행됩니다. Fuse.js의 동적 임포트는 라이브러리 코드만 다운로드하며, 텍스트는 다운로드하지 않습니다.
"원래 순서 유지"는 무슨 의미인가요? 도구는 입력에서 처음 등장한 순서로 행을 유지합니다. "banana"가 1, 5, 12번 행에 등장하면, 출력은 다른 고유 행에 대한 상대적 위치로 1번 행에 해당하는 위치에 유지합니다. 출력을 알파벳순으로 정렬하지 않습니다.
exact 매칭과 fuzzy 매칭의 차이점은 무엇인가요? exact 매칭은 대소문자 설정에 따라 문자 단위로 동일한 행을 제거합니다. fuzzy 매칭은 문자열 유사도 점수를 사용하여 유사하지만 동일하지 않은 행(예: "colour"와 "color", "John Smith"와 "Jon Smith")을 그룹화합니다.
fuzzy 임계값은 어떻게 작동하나요? 임계값은 Fuse.js의 감도를 제어합니다. 값 0.0은 완전 일치가 필요함을 의미하고, 값 1.0은 임의의 두 문자열이 일치함을 의미합니다. 슬라이더는 0.1~0.9 범위입니다. 0.1("strict")에서는 매우 가벼운 차이(한 글자 치환이나 전위)만 그룹화로 이어집니다. 0.7~0.9("loose")에서는 일반적으로 유사한 문자열이 그룹화됩니다. 기본값 0.3은 가벼운 오타와 서식 차이에 대한 합리적인 출발점입니다.
중복의 첫 번째 등장 대신 마지막 등장을 유지할 수 있나요? exact 모드에서는 불가능합니다. 도구는 항상 첫 번째 등장을 유지하고 나중 것을 삭제합니다. fuzzy 모드에서는 그룹의 임의 행을 클릭하여 "keep" 선택으로 표시할 수 있으므로, 사실상 임의의 등장을 유지할 수 있습니다.
빈 행은 어떻게 되나요? 빈 행은 문자가 0개인 별개의 행으로 처리됩니다. 연속된 여러 빈 행은 exact 모드에서 하나의 빈 행으로 중복 제거됩니다. 모든 빈 행을 제거하려면 중복 제거 전후에 텍스트 클리너를 사용하는 것을 고려하세요.
처리할 수 있는 행 수에 제한이 있나요? 강제 제한은 없습니다. 매우 큰 입력(수천 행)은 exact 모드에서 빠르게 처리됩니다. fuzzy 모드는 최악의 경우 이차 복잡도를 가집니다(각 행이 다른 모든 행과 비교됨). 따라서 매우 큰 입력(수만 행)은 기기에 따라 몇 초가 걸릴 수 있습니다.
관련 도구
- Text Sorter — 깔끔하고 정렬된 목록을 만들기 위해 중복 제거 전후에 알파벳순, 숫자순, 길이순 또는 단어 수순으로 행을 정렬합니다.
- Word Counter — 텍스트를 정리한 후 단어, 문장, 단락, 읽기 시간을 카운트합니다.
- Find and Replace — 중복 제거를 실행하기 전에 변형을 정규화하기 위한 대상 텍스트 치환을 수행합니다.
지금 Duplicate Line Remover를 사용해 보세요: Duplicate Line Remover