텍스트 중복 제거 도구
텍스트의 중복 내용을 빠르게 제거, 줄, 단어, 문장 단위 중복 제거 지원
중복 내용(0)
텍스트 중복 제거란?
텍스트 중복 제거 도구는 텍스트의 중복 내용을 빠르게 식별하고 제거하는 데 사용됩니다. 중복되는 줄, 단어, 문장 또는 문단을 처리할 때 이 도구는 데이터를 효율적으로 정리하는 데 도움이 됩니다. 이 도구는 여러 중복 제거 모드를 지원합니다: 목록 데이터에는 줄 단위, 어휘 분석에는 단어 단위, 문서 편집에는 문장 단위, 긴 텍스트 처리에는 문단 단위가 적합합니다. 로그, CSV, 번역 원문처럼 순서가 의미를 갖는 데이터는 중복 제거 방식에 따라 결과가 달라질 수 있으므로, 처리 전 구분자와 대소문자 민감도를 함께 확인해야 합니다.
사용 방법
기본 조작
- 왼쪽 텍스트 상자에 중복을 제거할 텍스트를 입력하거나 붙여넣으세요
- 적절한 중복 제거 모드를 선택하세요 (줄, 단어, 문장 등)
- 필요에 따라 옵션을 조정하세요 (대소문자 구분, 순서 유지 등)
- 오른쪽에서 실시간 중복 제거 결과와 통계를 확인하세요
- 복사 버튼을 클릭하여 결과를 클립보드에 저장하세요
모드 설명
- 줄: 각 줄을 독립 단위로 처리하여 같은 줄을 제거합니다
- 단어: 공백을 기준으로 텍스트를 분리해 중복된 단어를 제거합니다
- 문장: 마침표, 물음표, 느낌표로 분리해 중복된 문장을 제거합니다
- 단락별: 빈 줄로 구분하고 중복된 단락을 제거합니다
- 문자별: 텍스트에서 중복된 문자를 제거합니다
활용 사례
기술 원리
중복 제거는 JavaScript Set 기반의 원스캔 방식입니다. ECMAScript Set은 SameValueZero 동등 알고리즘을 사용합니다(NaN은 NaN과 같고, +0은 -0과 같으며, 그 외에는 엄격 동등 비교 — Array.prototype.includes가 사용하는 것과 동일). 명세는 평균 조회 시간이 준선형을 보장하도록 요구하며, V8은 O(1) 상각 삽입이 가능한 개방 주소 해시 테이블로 구현하므로 전체 패스는 O(n)입니다. 결과 배열에 push하고 매 요소마다 indexOf를 호출하는 단순한 방식은 O(n²)이며, 항목 수가 약 1만 개를 넘으면 체감 성능이 급격히 떨어집니다. 분할은 모드별로 다릅니다. 줄 모드는 /\r?\n/으로 CRLF(Windows)와 LF(Unix) 줄바꿈을 모두 처리하고, 단어 모드는 /\s+/, 문장 모드는 /(?<=[.!?])\s+/, 문단 모드는 /\n{2,}/으로 분할합니다. 각 단위는 Set 키가 되기 전에 선택적 정규화를 거칩니다: trim()으로 앞뒤 공백 제거, toLowerCase()로 대소문자 무시 매칭, String.prototype.normalize('NFC')로 조합형(é, U+00E9)과 분해형(e + U+0301) 형태가 동일 항목으로 통합됩니다. 순서는 보존됩니다 — 결과 배열은 반복 순서대로 구성되며, Set은 '봤던 것인가?' 필터로만 활용됩니다. SQL DISTINCT와 Python set()도 동일한 자료 구조 선택에 기반합니다. 수천만 건에서는 확률적 블룸 필터(약 10비트/요소에서 ≈1% 오탐률)가 상수 메모리를 제공하는 대안이지만, 브라우저 측 텍스트 도구에서는 과잉입니다.
- Set 조회는 SameValueZero 알고리즘(ECMA-262 §7.2.10) 사용 — NaN은 NaN과 일치, +0은 -0과 일치, 그 외에는 엄격 동등
- V8은 Set을 해시 테이블로 구현; insert와 has가 상각 O(1)이므로 전체 중복 제거가 O(n), indexOf 기반 O(n²)와 대조
- 줄 모드 정규식 /\r?\n/은 CRLF, LF, 후행 CR을 한 번의 분할로 처리; 이를 무시하면 보이지 않는 '\r' 접미사가 정확한 매칭을 방해
- String.prototype.normalize('NFC')를 통한 Unicode 정규화로 조합형/분해형(예: 'é' U+00E9 vs 'e' + U+0301)을 하나의 키로 통합
- 대소문자 무시 모드는 키만 소문자화 — 원본 대소문자 값은 출력에 보존되어 첫 번째 'ERROR'는 그대로 유지되고 이후 'error' 줄은 버려짐
- 순서 보존은 기본 제공: 결과 배열은 입력 순서로 구성되고 Set은 필터로만 활용되므로 안정 정렬의 SQL DISTINCT와 동일한 동작
- 1000만 건 이상에서 메모리가 병목일 때, 블룸 필터(≈10비트/요소, 1% 오탐률)가 Set을 대체 — 브라우저에서는 100만 문자열의 Set이 100MB 미만으로 충분히 수용 가능
예시
줄 중복 제거, 첫 번째 항목 유지
입력:
apple
banana
apple
orange
banana
출력:
apple
banana
orange공백을 트리밍하는 줄 중복 제거
입력:
hello
hello
hello
world
출력 (트리밍 후):
hello
world대소문자 무시 중복 제거
입력:
ERROR
error
Warning
WARNING
warning
출력 (대소문자 무시):
ERROR
Warning고유 이메일 목록 추출
입력:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com
출력 (대소문자 무시, 줄 모드):
alice@example.com
bob@example.com
carol@example.com단어 중복 제거
입력: hello world hello again world
출력: hello world again문장 중복 제거
입력: This is a test. This is a test. Another sentence.
출력: This is a test. Another sentence.자주 묻는 질문
어떤 항목이 중복으로 간주되나요?
각 단위(줄, 단어, 문장, 단락, 글자)를 다른 단위들과 비교해 동일한 항목을 중복으로 봅니다. 대소문자 구분 여부는 토글로 켜고 끌 수 있으며, 중복이 제거된 결과와 함께 몇 개가 제거되었는지 알려 줍니다.
원래 순서가 유지되나요?
네. 각 고유 항목의 첫 번째 등장 위치가 그대로 보존되고, 이후의 중복만 제거됩니다. 결과는 원본 순서를 그대로 유지합니다.
빈 줄도 중복으로 처리되나요?
빈 줄도 다른 줄과 똑같이 비교됩니다. 첫 번째 빈 줄은 유지되고, 그 뒤에 나오는 동일한 빈 줄들은 다른 중복과 마찬가지로 제거됩니다.
특정 부분 문자열이나 특정 열 기준으로 중복 제거할 수 있나요?
아니요. 중복 제거는 각 단위(줄, 단어, 문장, 단락, 글자)의 전체 내용을 기준으로 수행됩니다. 열 기준이나 부분 문자열 기준의 중복 제거 모드는 제공하지 않습니다.
결과를 정렬해 주나요?
아니요. 결과는 항상 원본 순서를 유지하며, 정렬 옵션은 제공하지 않습니다.
어느 정도 크기까지 처리할 수 있나요?
한도는 브라우저 메모리입니다. 데스크톱 브라우저에서는 수십만 줄까지 무리 없이 처리되지만, 수백만 줄짜리 파일은 메모리 부족이 발생할 수 있습니다. 그런 경우에는 `sort -u`나 `awk '!seen[$0]++'` 같은 CLI 도구를 사용하세요.
입력한 텍스트가 업로드되나요?
아니요. 중복 제거는 브라우저 메모리의 Set을 이용해 수행되며, 붙여넣은 줄들은 외부로 전송되지 않습니다.
관련 도구
텔레프롬프터
부드러운 자동 스크롤, 전체 화면, 미러 텍스트, 속도 조절을 지원하는 무료 온라인 텔레프롬프터입니다. 영상 촬영, 연설, 라이브 방송에 적합합니다.
문자열 반전 도구
온라인 문자열 반전 도구로 전체 반전, 단어 반전, 줄별 반전 등 다양한 모드를 지원합니다.재미있는 텍스트 처리로 다양한 요구를 충족합니다.
병음 변환 도구
무료 온라인 한자 병음 변환 도구. 성조 기호, 성조 번호, 무성조 3가지 모드 지원. 구분 기호와 대소문자 사용자 지정. 한자를 병음으로 즉시 변환.
문자 빈도 분석 도구
무료 온라인 문자 빈도 분석 도구. 텍스트에서 각 문자의 출현 횟수와 빈도를 분석. 대소문자 구분 및 공백 옵션 지원.
대소문자 변환 도구
온라인 대소문자 변환 도구로 camelCase, snake_case, kebab-case, CONSTANT_CASE 등 다양한 명명 포맷 상호 변환을 지원합니다. 프로그래머 필수, 원클릭으로 변수명 포맷을 변환합니다.
중국어 변환 도구
온라인 간체/번체 변환 도구로 간체 중국어와 번체 중국어 상호 변환을 지원합니다. 대만, 홍콩 등 다양한 표준을 제공하고 지역 용어 차이를 처리합니다.
