중복 줄 제거 도구로 할 수 있는 일
중복 줄 제거는 목록에서 두 번 이상 나온 줄을 찾아 지우는 작업입니다. 이메일 목록 두 개를 합칠 때, 여러 보고서에서 키워드를 복사해 모을 때, 같은 항목을 실수로 두 번 붙여넣었을 때 중복 행이 쌓입니다. 이 도구는 텍스트를 한 줄씩 읽으면서 반복된 줄을 제거합니다.
남길 줄 버튼으로 세 가지 방식 중 하나를 고릅니다.
- 줄마다 하나씩: 중복을 지우고 각 줄의 첫 번째 항목만 남깁니다. 흔히 말하는 “중복 제거” 결과입니다.
- 한 번만 나온 줄: 중복이 있는 줄은 첫 번째 항목까지 모두 지웁니다. 정말로 한 번만 나온 줄만 남습니다.
- 중복된 줄만: 두 번 이상 나온 줄을 한 번씩만 보여 줍니다. 무엇이 중복되었는지 확인할 때 씁니다.
사용 방법
- 목록 입력 칸에 목록을 한 줄에 하나씩 붙여넣습니다.
- 남길 줄에서 방식을 고릅니다.
- “Apple”과 “apple”을 같은 줄로 보려면 대소문자 무시를 켭니다.
- 줄 끝 공백이 의미 있는 경우가 아니라면 줄 끝 공백 무시는 켜 둡니다.
- 복사로 결과를 복사하거나 다운로드로 파일에 저장합니다.
도구 아래의 안내 문구에 몇 줄을 지웠고 몇 줄이 남았는지 표시됩니다.
옵션 자세히 보기
대소문자 무시는 대문자와 소문자를 구분하지 않고 줄을 비교합니다. 먼저 나온 형태가 남기 때문에 “apple”이 “Apple”보다 앞에 있으면 “apple”이 남습니다.
줄 끝 공백 무시는 비교하기 전에 각 줄의 앞뒤에 있는 공백과 탭을 잘라 냅니다. 남는 줄은 바뀌지 않습니다. 들여쓰기한 코드처럼 앞쪽 공백에 의미가 있다면 끄는 것이 좋습니다.
빈 줄 제거는 줄마다 하나씩을 골랐을 때 나타나며 기본으로 켜져 있습니다. 끄면 빈 줄이 원래 자리에 남으므로, 빈 줄로 목록의 묶음을 나눈 경우에 유용합니다. 빈 줄끼리는 중복으로 취급하지 않습니다.
횟수 표시는 중복된 줄만을 골랐을 때 나타납니다. 각 줄 뒤에 괄호로 나온 횟수를 붙입니다.
예시
대소문자 옵션의 차이가 잘 보이도록 아래 예시는 영어 목록을 사용했습니다. 목록은 apple, banana, Apple, cherry, banana, 빈 줄, date, cherry, banana 순서입니다.
| 설정 | 결과 |
|---|---|
| 줄마다 하나씩 | apple, banana, Apple, cherry, date |
| 줄마다 하나씩, 대소문자 무시 | apple, banana, cherry, date |
| 한 번만 나온 줄 | apple, Apple, date |
| 중복된 줄만, 횟수 표시 | banana (3), cherry (2) |
| 중복된 줄만, 횟수 표시, 대소문자 무시 | apple (2), banana (3), cherry (2) |
지면을 아끼려고 결과를 쉼표로 이어 적었습니다. 실제 도구에서는 각 항목이 한 줄씩 표시됩니다.
기본 설정에서는 “중복 줄 3개를 제거했습니다. 5줄이 남았습니다.”라는 안내가 나옵니다.
한글 목록도 똑같이 처리됩니다. 페이지에 처음 들어 있는 예시 목록은 사과, 바나나, 사과(끝에 공백 하나), 체리, 바나나, 빈 줄, 대추, 체리, 바나나입니다. 이 목록을 이 도구로 실행한 결과입니다.
| 설정 | 결과 |
|---|---|
| 줄마다 하나씩 (기본) | 사과, 바나나, 체리, 대추 |
| 중복된 줄만, 횟수 표시 | 사과 (2), 바나나 (3), 체리 (2) |
세 번째 줄의 “사과 ”는 끝에 공백이 있지만 줄 끝 공백 무시가 켜져 있어 첫 번째 “사과”와 같은 줄로 처리되었습니다.
작동 원리
도구는 줄바꿈마다 텍스트를 나눈 뒤 줄마다 비교용 키를 만듭니다. 키는 줄 그 자체이며, 줄 끝 공백 무시가 켜져 있으면 앞뒤 공백을 잘라 내고 대소문자 무시가 켜져 있으면 소문자로 바꿉니다. 각 키가 몇 번 나오는지 센 다음, 줄을 순서대로 훑으면서 남길 줄을 정합니다. 키가 아니라 원래 줄을 남기기 때문에 띄어쓰기와 대문자는 바뀌지 않습니다.
팁
- 정렬은 중복 제거 뒤에 합니다. 중복 제거는 순서를 유지합니다. 목록을 정렬까지 하려면 결과를 알파벳순 정렬 도구에 붙여넣습니다.
- 지저분한 목록은 먼저 정리합니다. “New York”과 “New York”처럼 중간에 이중 공백이 있는 줄은 같은 줄로 보지 않습니다. 공백 제거로 먼저 고치면 됩니다.
- 한 줄에 항목 하나씩. 항목이 쉼표로 구분되어 있다면 먼저 한 줄에 하나씩 나누거나, 정렬 도구의 쉼표 옵션을 쓰면 됩니다. 정렬 도구도 중복을 지울 수 있습니다.
- PDF에서 줄이 끊긴 텍스트는 먼저 줄바꿈 제거로 이어 붙입니다.
- 보기에는 같은데 중복으로 잡히지 않는 한글. macOS에서 만든 파일 이름처럼 자모가 분리된 형태(NFD)로 저장된 한글은 화면에서는 똑같아 보여도 다른 줄로 취급됩니다. 이럴 때는 목록을 먼저 일반 텍스트 변환기에 넣으면 자모가 합쳐진 일반적인 형태(NFC)로 바뀌므로, 그 결과로 중복을 제거하면 됩니다.
다른 방법으로 중복 줄 제거하기
Excel: 열을 선택한 뒤 데이터 탭에서 중복된 항목 제거를 누릅니다. Excel 365에서는 =UNIQUE(A1:A100) 수식도 쓸 수 있습니다.
Google 스프레드시트: 데이터 메뉴의 데이터 정리에서 중복 항목 삭제를 고르거나, =UNIQUE(A1:A100) 수식을 씁니다.
Notepad++: Edit 메뉴의 Line Operations에서 Remove Duplicate Lines를 고릅니다.
명령줄: sort file.txt | uniq는 중복을 지우지만 줄도 정렬해 버립니다. awk '!seen[$0]++' file.txt는 원래 순서를 유지합니다.
Python: list(dict.fromkeys(lines))는 각 줄의 첫 번째 항목을 순서대로 남깁니다.
이메일이나 웹 페이지에서 가져온 짧은 목록이라면 스프레드시트를 여는 것보다 여기에 붙여넣는 편이 대개 더 빠릅니다.