리스트 비교 도구 (공통 행·차이 행 추출)
두 개의 텍스트 리스트(한 줄에 하나씩)를 비교하여 집합 연산으로 양쪽 모두에 있는 행, A에만 있는 행, B에만 있는 행을 자동으로 추출합니다. 메일 목록 대조나 재고 목록 중복 확인에 유용합니다. 모든 처리는 브라우저 내에서 완료되며 입력 내용은 서버로 전송되지 않습니다.
리스트 비교 도구란
두 개의 리스트를 나란히 놓고 「양쪽에 다 있는 것」과 「한쪽에만 있는 것」을 가려내는 일은 눈으로 하면 반드시 놓칩니다. 이 도구는 한 줄에 한 항목씩 적은 텍스트를 두 개 붙여 넣기만 하면, 집합 연산으로 공통 행·A에만 있는 행·B에만 있는 행의 세 가지로 자동으로 나눠 줍니다. 메일 주소 대조, 재고 목록 확인, 명단의 차이 확인처럼 스프레드시트 함수를 짜기 전에 끝내고 싶은 장면을 위한 것입니다.
행의 순서는 무시합니다. 같은 내용의 행이 다른 위치에 있어도 공통 행으로 다루므로, 두 리스트의 정렬 상태가 맞지 않아도 비교할 수 있습니다. 앞뒤 공백은 자동으로 없애고 빈 줄은 건너뛰며, 중복된 행은 하나로 묶습니다. 대소문자를 구분할지는 바꿀 수 있고, 구분하지 않는 설정에서도 화면에 나오는 행은 붙여 넣은 그대로의 표기를 유지합니다. 모든 처리는 브라우저 안에서 끝나므로 붙여 넣은 내용이 밖으로 전송되지 않습니다.
두 리스트를 비교하는 순서
- 리스트 A를 붙여 넣습니다 한 줄에 한 항목의 형태로 입력합니다. 스프레드시트의 한 열을 그대로 복사해 붙여 넣을 수 있습니다.
- 리스트 B를 붙여 넣습니다 비교할 다른 리스트를 같은 형식으로 넣습니다. 행 수가 달라도 괜찮습니다.
- 대소문자 처리를 정합니다 메일 주소처럼 표기 흔들림을 흡수하고 싶다면 구분하지 않는 설정으로, ID나 코드처럼 엄밀하게 맞춰야 한다면 구분하는 설정 그대로 둡니다.
- 세 가지 결과를 읽습니다 공통·A에만·B에만이 한 번에 표시되며, 각각 복사할 수 있어 그대로 다음 작업으로 넘길 수 있습니다.
더 잘 활용하기 위한 팁
- 메일링 리스트와 수신 거부 목록을 비교하면 다음 발송에서 제외해야 할 주소를 한 번에 추출할 수 있습니다.
- 재고 목록과 발주 목록을 비교하여 아직 발주하지 않은 상품만 빠르게 찾아내는 용도로도 사용할 수 있습니다.
- 각 행의 앞뒤 공백은 자동으로 제거된 후 비교되므로 복사·붙여넣기 과정에서 섞인 여분의 공백을 신경 쓸 필요가 없습니다.
- 같은 행이 여러 번 등장하더라도 결과에는 중복이 제거된 고유한 행만 한 번씩 표시되어 지저분한 목록을 정리하는 데도 도움이 됩니다.
- "대소문자 구분" 체크를 해제하면 Example.com과 example.com처럼 표기가 다른 경우도 같은 행으로 처리할 수 있습니다.
이런 때에 쓸 수 있습니다
메일 발송 명단을 대조할 때
이미 보낸 명단과 전체 명단을 비교해 아직 보내지 않은 수신처만 뽑아낼 수 있습니다. 대소문자를 구분하지 않으면 표기가 흔들린 주소도 같은 사람으로 다룹니다.
재고 목록과 실사 결과를 맞출 때
장부상의 품번 목록과 현장에서 센 목록을 나란히 놓고, 장부에는 있는데 현물이 없는 것과 그 반대를 한 번에 찾아낼 수 있습니다.
탈퇴자와 신규 가입자를 뽑을 때
지난달 회원 ID와 이번 달을 비교하면, A에만 있는 쪽이 탈퇴자, B에만 있는 쪽이 신규 가입자입니다.
설정 파일의 키를 비교할 때
운영과 검증 환경의 환경 변수 이름을 늘어놓고 한쪽에만 있는 키를 찾을 수 있습니다. 값이 아니라 키의 유무를 확인하고 싶을 때에 맞습니다.
리스트 비교 용어
- 공통 행(교집합)
- A와 B 양쪽에 나타나는 행입니다. 수학의 교집합에 해당합니다. 순서가 달라도 내용이 같으면 공통 행이 됩니다.
- A에만 있는 행(차집합)
- A에는 있지만 B에는 없는 행으로, A에서 B를 뺀 차집합에 해당합니다.
- 집합 연산
- 중복과 순서를 따지지 않고 「들어 있는가 아닌가」만으로 원소를 다루는 사고방식입니다. 이 도구가 순서를 무시하는 것은 이 때문입니다.
- 차이 비교(diff)와의 차이
- 차이 도구는 행의 배열을 유지한 채 어디가 삽입·삭제되었는지를 보여 주므로, 순서만 바뀌어도 차이로 검출됩니다. 이 도구는 순서를 무시하므로 내용이 같으면 공통 행으로 다룹니다. 목적에 맞춰 골라 쓰세요.
- 대소문자 구분
- 구분하지 않는 설정에서는 비교할 때만 소문자로 맞춰 대조합니다. 화면에 나오는 행은 입력한 표기 그대로이므로 원래의 대소문자가 사라지지 않습니다.
자주 묻는 질문
여담 ― "집합 연산"으로 목록을 비교한다는 발상
두 목록의 "차이"를 구하는 방법은 하나가 아닙니다. 텍스트 차이(Diff) 도구처럼 행 단위로 작동하는 diff 알고리즘은 행의 순서를 유지한 채 대응 관계를 찾기 때문에 소스 코드나 설정 파일의 변경 이력을 추적하는 데 적합합니다. 반면 이메일 주소나 재고 코드처럼 애초에 순서에 의미가 없는 목록을 비교할 때는 수학의 집합 연산(교집합·차집합)으로 생각하는 편이 훨씬 직관적입니다. 본 도구는 후자의 방식을 채택하고 있습니다.
집합 연산에서 "교집합(intersection)"은 두 집합 모두에 공통으로 포함된 원소를, "차집합(difference)"은 한쪽 집합에만 포함된 원소를 가리킵니다. 본 도구의 "공통 행"은 교집합(A∩B)에, "A에만 있는 행"과 "B에만 있는 행"은 각각 차집합(A−B, B−A)에 해당합니다. 수학적으로는 단순한 연산이지만 실무에서는 고객 목록 정리, 발송 대상 좁히기 등 다양한 상황에서 활용됩니다.
구현상의 특징으로, 본 도구는 행을 비교할 때 자바스크립트의 Map 객체를 사용하여 정규화한 키(대소문자를 구분하는 경우 그대로, 구분하지 않는 경우 소문자로 변환한 문자열)별로 처음 등장한 표기를 기록합니다. 이를 통해 수천 행 규모의 목록도 빠르게 비교할 수 있으며, 출력되는 행은 원래의 표기(대소문자 포함)를 그대로 유지할 수 있습니다.