가져오기 전 마케팅 이메일 목록 정리
한 CRM에서 목록을 내보내고, 웨비나 가입에서 다른 목록을 끼워넣고, 둘을 도구에 붙여넣은 뒤 대소문자 구분 안 함과 공백 잘라내기를 켜고 중복 제거하세요. Mailchimp와 HubSpot은 어차피 가져오기에서 중복 주소를 거부하지만, 중복만이 아니라 배치 전체를 거부하므로 먼저 이걸 해두면 재업로드를 아낄 수 있습니다.
아무 목록이든 붙여넣고, 정확한 중복을 제거하고, 순서를 유지하거나 결과를 정렬하세요. 대소문자와 공백 토글 포함.
단일 텍스트 블록에서 중복 줄을 제거하는 무료 브라우저 내 유틸리티입니다. 입력을 붙여넣고 원래 순서를 유지할지 출력을 정렬할지 선택하면 중복이 사라집니다. 아무것도 기기를 떠나지 않습니다.
명령줄에서 sort -u의 GUI 등가물이거나, 원래 순서로 첫 출현을 유지하고 싶을 때의 awk '!seen[$0]++'입니다. sort | uniq를 실행하기 위해 4,000줄짜리 이메일 내보내기를 터미널에 붙여넣은 적이 있다면, 이건 터미널 없이 같은 일을 합니다.
중복 제거는 정확하고 줄 단위입니다. 두 줄이 중복으로 카운트되려면 문자 단위로 일치해야 합니다(대소문자 및 트림 토글에 따름). 퍼지 매칭, 근사 중복 감지, 유사도 점수는 의도적으로 범위 밖입니다. 다른 문제, 다른 도구.
내부적으로 도구는 각 줄을 한 번씩 훑으며 본 값을 해시 기반 집합으로 추적합니다. 이는 JavaScript의 Set 또는 Python의 set과 같은 자료구조입니다. 조회는 평균 O(1)이므로 일반 노트북에서 백만 줄이 1초 미만에 실행됩니다. 기반 알고리즘은 평범한 hash table 멤버십입니다.
두 가지 모드. 순서 유지는 각 줄의 첫 출현을 유지하고 이후 모든 중복을 버립니다. awk '!seen[$0]++'처럼 동작합니다. 정렬 후 중복 제거는 먼저 전체 입력을 알파벳순으로 정렬한 뒤 각 고유 줄을 한 번 출력합니다. sort -u처럼 동작합니다. 다운스트림 소비자가 기대하는 쪽을 고르세요.
비교 자체에 대한 토글이 있습니다. 대소문자 구분 안 함은 [email protected]과 [email protected]을 같은 줄로 취급합니다. 공백 잘라내기는 비교 전에 앞뒤 공백과 탭을 제거하므로 " example", "example ", "example"이 한 항목으로 합쳐집니다. 둘 다 기본은 꺼짐입니다. 안전한 동작은 입력된 그대로 정확히 일치시키는 것이기 때문입니다.
입력 한 페인, 출력 한 페인. 아무것도 업로드되지 않습니다.
입력 페인에 텍스트를 떨어뜨리세요. 어떤 목록이든 됩니다: 이메일, IP, URL, SKU, 로그 타임스탬프, 패키지 이름, 한 줄에 하나면 무엇이든. 결과를 먼저 보고 싶다면 Sample을 클릭해 의도적으로 중복을 포함한 예시를 불러오세요.
순서 유지(첫 출현을 유지, awk '!seen[$0]++'처럼) 또는 정렬 후 중복 제거(알파벳순, sort -u처럼)를 고르세요. Alice와 alice가 합쳐져야 한다면 대소문자 구분 안 함을, 앞뒤 공백을 무시해야 한다면 공백 잘라내기를 켜세요.
오른쪽 페인에 중복 제거된 출력과 제거된 줄 수가 표시됩니다. Copy를 클릭해 가져가거나 Download를 클릭해 .txt 파일로 저장하세요. 두 페인은 독립적으로 스크롤되므로 어떤 줄이 사라졌는지 확인할 수 있습니다.
한 CRM에서 목록을 내보내고, 웨비나 가입에서 다른 목록을 끼워넣고, 둘을 도구에 붙여넣은 뒤 대소문자 구분 안 함과 공백 잘라내기를 켜고 중복 제거하세요. Mailchimp와 HubSpot은 어차피 가져오기에서 중복 주소를 거부하지만, 중복만이 아니라 배치 전체를 거부하므로 먼저 이걸 해두면 재업로드를 아낄 수 있습니다.
auth.log 일주일치에서 awk로 출발지 IP를 뽑아내 붙여넣고, 순서 유지 모드로 중복 제거하세요. "누가 먼저 나타났는가"라는 대략적 시간 신호를 잃지 않고 고유 공격자의 깨끗한 목록을 얻습니다. 그것을 방화벽 차단 목록에 넣으세요.
사이트맵과 페이지네이션된 인덱스를 스크래핑하면 같은 URL이 여러 번 반환됩니다. 결합된 목록을 떨어뜨리고 정렬 및 중복 제거하면 정규의 크롤 프론티어를 얻습니다. 후행 슬래시와 쿼리 문자열은 여전히 다른 줄로 취급되므로 합치고 싶다면 먼저 정규화하세요.
두 virtualenv에 걸친 pip freeze, 또는 monorepo에 걸친 npm ls --all은 같은 패키지를 많은 줄에 인쇄합니다. 연결하고, 붙여넣고, 중복 제거하면 name==version당 한 줄이 되어 실제로 무엇이 설치되어 있는지 빠르게 눈으로 확인할 수 있습니다.
줄 수준 중복 제거에 동작합니다. 각 행이 자체 완결적 레코드일 때 보통 필요한 것이 이것입니다. 주의: 이것은 일반 텍스트 중복 제거이지 열을 인식하지 않습니다. 인용된 쉼표를 존중하고 열 순서를 무시하는 진짜 행 수준 중복 제거가 필요하면 진짜 CSV 도구를 사용하세요. 스프레드시트에서 붙여넣은 대부분의 경우, 줄 중복 제거로 충분합니다.
브라우저 탭 세 개에서 한 문서로 참고문헌을 복사하면 같은 DOI가 네 번 반복됩니다. 붙여넣고, 공백 잘라내기를 켠 뒤(PDF에서의 복사-붙여넣기는 떠도는 공백을 좋아하므로) 중복 제거하면 깨끗한 참고문헌 섹션이 나옵니다. 알파벳순 참고문헌 목록에는 정렬 모드가 편리합니다.
텍스트를 중복 제거할 때 가장 자주 무는 엣지 케이스. 출력을 신뢰하기 전에 한 번 훑어볼 가치가 있습니다.
| Topic | What this tool does |
|---|---|
| 순서 보존 | 순서 유지는 첫 출현을 유지하고 이후 중복을 버립니다. awk '!seen[$0]++'나 Python list(dict.fromkeys(lines))처럼. 정렬 모드는 알파벳순으로, sort -u처럼. |
| 대소문자 구분 | 기본은 꺼짐. 대소문자 구분 안 함이 켜지지 않는 한 Alice와 alice는 다릅니다. 이메일과 사용자명 목록은 보통 켜기를 원하고 SKU 목록은 보통 그렇지 않습니다. |
| 공백 잘라내기 | 기본은 꺼짐. 공백 잘라내기가 켜질 때까지 " example", "example ", "example"은 세 개의 다른 줄입니다. 내부 공백은 절대 건드리지 않습니다. |
| 빈 줄 | 일반 줄 값으로 취급됩니다: 빈 문자열. 중복 제거가 켜져 있으면 입력에 빈 줄이 있었다면 하나의 빈 줄이 남습니다. 모든 빈 줄을 제거하려면 별도의 공백 정리 단계를 사용하세요. |
| 줄 끝 (CRLF 대 LF) | 말미의 \r이 분할 후 살아남으면 \r\n으로 끝나는 줄은 \n으로 끝나는 줄과 기술적으로 다릅니다. 우리는 \r?\n으로 분할하므로 혼합된 끝은 합쳐집니다. 유령 중복이 보이면 입력의 줄 중간에 떠도는 \r 문자가 있는 것입니다. |
| 유니코드 정규화 | 시각적으로 동일한 두 문자열은 하나가 NFC를 사용하고 다른 하나가 NFD(미리 합성된 악센트 대 분해된 악센트)를 사용하면 다르게 비교될 수 있습니다. 이 도구는 정규화하지 않습니다. 의심스럽다면 먼저 두 입력을 String.prototype.normalize('NFC')나 Python unicodedata.normalize로 NFC로 정규화하세요. |
| 입력 끝의 후행 줄바꿈 | \n으로 끝나는 파일은 가짜 빈 마지막 줄을 가집니다. 대부분의 편집기는 이를 숨깁니다. 우리는 그것을 하나의 빈 줄로 취급하고 다른 빈 줄과 함께 중복 제거합니다. 출력은 관례상 단일 후행 줄바꿈을 보존합니다. |
| 인코딩 | 전체에 걸쳐 UTF-8. 붙여넣을 때 브라우저가 디코딩을 처리합니다. 바이트가 원래 Latin-1이나 Windows-1252였다면 중복 제거가 실행되기도 전에 ASCII 외 문자가 잘못될 수 있습니다. 인코딩은 상류에서 변환하세요. |
둘 다, 선택하세요. 순서 유지는 각 줄의 첫 출현을 유지하고 이후 모든 중복을 버리므로 출력은 입력과 거의 같은 순서로 읽힙니다. 정렬 후 중복 제거는 결과 전체를 알파벳순으로 정렬합니다. 순서가 의미를 가질 때(시간순 로그, 순위 매긴 목록)는 순서 유지를 원할 것입니다. 그저 깨끗한 고유 집합이 필요할 때는 정렬을 원할 것입니다.
기본적으로 그렇습니다. 그것이 안전한 가정이기 때문입니다. 대소문자 구분 안 함을 켜지 않는 한 Alice와 alice는 다른 줄입니다. 대부분의 이메일 시스템은 로컬 부분의 주소를 대소문자 구분 없이 취급하므로 이메일 목록에는 거의 항상 이 토글을 켜두기 원할 것입니다. 대소문자 구분 안 하는 플랫폼의 사용자명도 마찬가지입니다. 진짜로 대소문자를 구분하는 SKU와 식별자는 꺼두세요.
네, 공백 잘라내기로 가능합니다. 비교 전에 앞뒤 공백과 탭을 제거하므로 " example ", "example ", "example"이 모두 한 항목으로 합쳐집니다. 입력이 손으로 편집되었거나 PDF에서 복사-붙여넣기 되었을 때 유용합니다. 둘 다 떠도는 공백을 남깁니다. 줄 내부의 공백은 그대로 둡니다.
uniq 명령은 인접한 중복만 합칩니다. 흔한 놀라움이죠. 다른 줄로 분리된 두 동일한 줄은 모두 uniq에서 살아남습니다. 그래서 Unix 관용구가 sort | uniq 또는 sort -u입니다: 중복이 옆에 오도록 먼저 정렬해야 합니다. 이 도구는 정렬된 입력이 필요 없습니다. 진행하면서 본 모든 줄을 해시 집합에서 추적하기 때문입니다.
아니요, 그건 다른 기능입니다. 카운트가 필요하면 Unix 명령은 정렬 후의 uniq -c입니다: sort input.txt | uniq -c | sort -rn은 카운트로 정렬된 빈도표를 줍니다. 가장 흔한 항목을 찾을 때 원하는 것입니다. 이 도구는 정리에 초점을 맞추며 분석에는 그렇지 않습니다.
몇 백만 줄은 괜찮습니다. 중복 제거 자체는 상수 시간 해시 조회로 O(n)이므로 병목은 중복 제거가 아니라 결과 페인을 렌더링하는 브라우저입니다. 매우 큰 입력(50MB 이상)에서는 textarea가 다시 그려질 때 눈에 띄는 멈춤을 예상하세요. 입력이 그렇게 크다면 거의 확실히 이미 sort -u를 쓸 수 있을 것입니다. 그것을 사용하세요.
텍스트는 절대 브라우저를 떠나지 않습니다. 중복 제거는 당신의 기기에서, 로컬로, JavaScript Set에 대해 실행됩니다. 입력에 대한 분석도 없고, 로그도 없고, 클라우드 왕복도 없습니다. 도구 전체가 몇 줄의 코드입니다: 줄바꿈으로 분할하고, 훑고, 본 적 없는 것을 유지. 그 뒤의 표준 라이브러리 프리미티브는 MDN의 Set 참조와 그에 상응하는 Python set 문서에 문서화되어 있습니다.