DT

중복 줄 제거 & 텍스트 정렬기

목록에서 중복을 없애고 원하는 기준으로 다시 정렬합니다.

이 도구는 100% 브라우저에서 실행됩니다. 입력한 데이터는 서버로 전송되지 않습니다.

이메일 수신자 목록, 키워드 리스트, 로그에서 추출한 오류 메시지, 여러 파일에서 모은 URL 목록. 이런 데이터는 거의 항상 중복을 포함하고, 대소문자나 앞뒤 공백만 다른 항목이 섞여 있어 단순 비교로는 걸러지지 않습니다.

이 도구는 여러 줄 텍스트에서 중복을 제거하고 원하는 기준으로 재정렬합니다. 대소문자 무시, 앞뒤 공백 제거, 빈 줄 제거를 조합할 수 있고, 반대로 중복된 항목만 골라 보거나 한 번만 나온 항목만 남기는 것도 가능합니다. 정렬은 가나다순·역순·길이순·자연 정렬(숫자 인식)을 지원하며, 각 줄에 접두사·접미사를 붙이거나 전체를 한 줄로 합치는 기능으로 SQL IN 절이나 배열 리터럴을 바로 만들 수 있습니다.

사용 방법

  1. 목록 붙여넣기왼쪽에 한 줄에 한 항목씩 붙여넣습니다. 엑셀 열을 복사해 붙여 넣어도 줄 단위로 인식됩니다.
  2. 정규화 옵션 설정앞뒤 공백 제거대소문자 구분을 조합해 무엇을 같은 값으로 볼지 정합니다. 이메일 목록이라면 대소문자를 무시하는 편이 보통 맞습니다.
  3. 정렬 방식 선택가나다순은 일반 목록에, 자연 정렬은 item 2, item 10 처럼 숫자가 포함된 항목에 적합합니다. 자연 정렬은 숫자를 수로 인식해 item 2item 10 앞에 오도록 정렬합니다.
  4. 형식 맞춰 내보내기접두사에 ', 접미사에 ', 를 넣고 한 줄로 합치면 SQL IN 절에 바로 쓸 수 있는 형태가 됩니다. 결과는 복사하거나 텍스트 파일로 저장합니다.

자주 묻는 질문

대소문자만 다른 항목이 중복으로 처리되지 않습니다.

대소문자 구분 옵션이 켜져 있는지 확인하세요. 이 옵션이 켜져 있으면 Appleapple 을 서로 다른 값으로 봅니다.

이메일 주소 목록에서는 대소문자를 무시하는 것이 실제 동작과 맞습니다. 도메인 부분은 대소문자를 구분하지 않고, 로컬 부분도 사실상 모든 메일 서비스가 구분하지 않기 때문입니다. 반대로 사용자 ID나 파일 경로 목록에서는 구분이 필요할 수 있습니다.

중복을 제거했는데도 같아 보이는 줄이 남아 있습니다.

눈에 보이지 않는 문자가 다를 가능성이 큽니다.

웹 페이지나 워드 문서에서 복사한 텍스트에는 일반 공백(U+0020) 대신 줄바꿈 없는 공백(U+00A0)이나 전각 공백(U+3000)이 섞여 있는 경우가 있습니다. 윈도우에서 만든 파일의 줄 끝에는 캐리지 리턴(\r)이 남아 있기도 합니다.

앞뒤 공백 제거 옵션은 일반적인 공백류를 처리하지만, 문자열 중간의 특수 공백까지 정규화하지는 않습니다. 이런 경우 정규식 테스터로 \u00a0 등을 찾아 치환한 뒤 다시 시도해 보세요.

'처음 것 유지'와 '마지막 것 유지'는 무엇이 다른가요?

중복된 항목 중 어느 위치의 것을 남길지 결정합니다.

목록이 시간순으로 정렬되어 있고 각 줄에 부가 정보가 붙어 있다면 이 선택이 결과를 바꿉니다. 예를 들어 로그에서 뽑은 user1 - 로그인user1 - 로그아웃 처럼 완전히 같지는 않은 줄이라면 애초에 중복으로 잡히지 않습니다. 완전히 동일한 줄에서는 어느 쪽을 남기든 내용이 같으므로, 이 옵션은 주로 남은 항목의 순서에 영향을 줍니다.

알아두면 좋은 개념

자연 정렬이 필요한 이유

문자열을 사전순으로 정렬하면 item 10item 2 보다 앞에 옵니다. 문자 단위로 비교할 때 12 보다 작기 때문입니다. 파일명이나 버전 번호 목록에서 특히 어색한 결과가 나옵니다.

자연 정렬은 문자열 안의 숫자 구간을 수로 인식해 비교합니다. v1.9 다음에 v1.10 이 오도록 정렬되어 사람의 기대와 일치합니다. 자바스크립트에서는 Intl.Collatornumeric: true 옵션을 주면 되고, 한국어를 포함한 다국어 정렬도 이 방식이 로케일 규칙에 맞게 처리합니다.

중복 제거의 자료구조

목록에서 중복을 없애는 가장 단순한 방법은 각 항목을 이전 항목들과 모두 비교하는 것이지만, 항목이 n개면 비교 횟수가 n²에 비례해 금세 느려집니다.

실무에서는 해시 집합(JavaScript의 Set, Python의 set)을 씁니다. 각 항목을 해시해 이미 본 값인지 상수 시간에 확인하므로 전체가 n에 비례하는 시간에 끝납니다. 이 도구도 같은 방식이라 수만 줄도 즉시 처리됩니다. 다만 '같음'의 기준은 정규화한 문자열이므로, 대소문자나 공백 처리 옵션이 결과를 좌우합니다.

목록을 코드로 옮길 때

긴 목록을 SQL IN 절이나 코드의 배열 리터럴로 옮기는 일은 자주 생깁니다. 접두사·접미사와 한 줄 합치기를 조합하면 'a','b','c' 형태를 바로 만들 수 있습니다.

다만 값에 작은따옴표가 포함되어 있다면 이스케이프가 필요하고, 목록이 수천 개를 넘으면 IN 절 자체가 성능 문제를 일으킵니다. 데이터베이스마다 파라미터 개수 제한도 있습니다. 규모가 커지면 임시 테이블에 넣고 조인하는 방식으로 바꾸는 것이 정석입니다.

함께 쓰면 좋은 도구

최종 업데이트: 2026-08-12