SheepDev

텍스트·정규식

목록의 중복·빈 줄·불필요한 공백 제거하기

사용할 도구

메일에서 복사한 이름·로그에서 추출한 값·수작업 ID에는 공백과 중복이 섞입니다. 행 정리는 다음 작업에 넘길 목록을 준비하지만 짧고 깔끔해졌다고 필요한 정보가 모두 남은 것은 아닙니다.

가상의 상품 ID로 앞뒤 공백 제거·빈 행 제거·중복 제거·정렬을 각각 시험합니다. 실제 개인정보나 권한 목록 없이도 성질을 알 수 있습니다. 순서·출현 횟수에 의미가 있다면 이를 보존하는 설정으로 시작하세요.

정렬하지 않고 원래 목록부터 보기

예시: 3행은 비어 있고 2·5행에는 앞뒤 공백이 있습니다
item-10
 item-2 

item-2
 item-10
item-1

처음에는 공백·빈 행·중복 제거·정렬·행 번호를 모두 끄고 기준을 만드세요. 전부 한 번에 처리하면 어느 옵션이 어떤 행을 없앴는지 알기 어렵습니다. 여섯 행 예시로 하나씩 켜 보세요.

공백을 없애면 비로소 중복이 됩니다

공백 제거만 켜면 2·4행이 같은 item-2가 되고 item-10도 같아지지만 두 번씩 남습니다. 빈 행·중복 제거를 켜고 정렬은 끄면 item-10, item-2, item-1 세 행이 됩니다. 처음 나타난 순서가 유지됩니다.

공백·빈 행·중복 제거, 정렬 없음
item-10
item-2
item-1

앞뒤 공백 제거 뒤 중복을 판정합니다. 공백 자체로 레코드를 구분한다면 끄세요. 고정 폭 데이터·들여쓰기 문장에서 공백도 정보입니다. 정리된 결과만 남으면 삭제한 공백이나 원래 출현 위치를 복원할 수 없습니다.

item-10이 item-2보다 먼저 오는 이유

일반 문자열 오름차순은 item-1, item-10, item-2이고 숫자 정렬은 item-1, item-2, item-10입니다. 번호 파일명을 읽는 순서에 가까워지지만 ID를 숫자로 변환한 것이 아니라 비교 기준만 바꾼 것입니다.

정렬에는 런타임 Intl.Collator를 사용합니다. 대소문자·악센트·언어별 순서는 바이트 순서와 다를 수 있습니다. 시스템 간 완전 동일한 기계 규약을 이 화면 순서만으로 정하지 마세요. 원래 순서가 우선순위면 정렬을 끄는 것이 맞습니다.

정렬의 대소문자 설정과 중복 판정은 별개

대소문자만 다른 입력
Alpha
alpha
Alpha

중복 제거에서도 Alpha와 alpha는 별개로 남습니다. 정렬 대소문자 옵션을 바꿔도 중복 제거가 대소문자를 무시하지는 않습니다. 혼동하면 정상적으로 남은 항목을 정리 실패로 볼 수 있습니다. 작은 예로 적용되는 연산을 확인하세요.

업무상 대소문자를 같게 본다면 해당 데이터에 적용 가능한지 먼저 확인하세요. 비슷한 파일명·식별자가 다른 대상을 가리킬 수 있습니다. 집합 비교의 대소문자 무시로 소속을 비교할 수 있지만 원래 시스템에서 같은 대상이라는 보장은 아닙니다.

행 번호는 마지막에 붙으며 원래 위치가 아닙니다

번호는 정리된 출력 위에서 1·2·3으로 붙으며 원래 여섯 행 위치가 아닙니다. 정렬했다면 정렬 후 순서입니다. 검토 목록에는 편하지만 원본 파일 행 참조와 혼동하지 마세요.

번호 접두사도 출력 문자열입니다. 다음 도구에는 item-10이 아닌 1. item-10이 전달됩니다. 기계가 ID를 처리할 때는 번호 없는 결과가 맞을 수 있습니다. 사람이 읽을 장식과 다음 처리에 필요한 값을 구분하세요.

중복을 지우면 출현 횟수를 잃습니다

같은 오류 100회는 중복 제거 뒤 한 행입니다. 종류 목록에는 좋지만 빈도 정보는 잃습니다. 주문·투표·접속 기록도 같은 문자열로 다른 사건을 나타낼 수 있습니다. 반복을 불필요하다고 보기 전에 종류가 필요한지 횟수가 필요한지 정하세요.

CSV 따옴표 필드의 줄바꿈은 레코드 경계가 아닐 수 있습니다. 바로 한 행 한 항목으로 다루지 말고 CSV 편집기로 구조를 읽고 필요한 열을 고르세요. 행 정리는 줄바꿈 문자열 처리이지 CSV 파서가 아닙니다.

전달 전 무엇을 지웠는지 설명하기

다음 용도에 맞는지 확인하세요. 순서를 보존해야 하나, 대소문자 변형을 구분하나, 공백을 지워도 되나, 행 번호가 값에 섞였나? 깔끔한 출력만 보면 사라진 정보는 안 보이므로 원본을 남겨 비교하세요.

'앞뒤 공백·빈 행·완전 중복 제거, 최초 출현 순서 유지'처럼 조건을 붙이면 받는 사람도 이해합니다. 도구가 입력 이력을 보관한다고 가정하지 말고 필요한 원본과 조건을 직접 관리하세요. 정리는 짧게 만들기가 아니라 올바른 의미를 다음 단계에 전달하는 일입니다.

같은 정리 작업도 순서에 따라 결과가 달라집니다

alpha, 공백으로 둘러싼 alpha, 다시 alpha라는 세 줄을 생각해 보세요. 공백을 그대로 두고 중복을 제거하면 두 종류가 남고, 먼저 공백을 제거하면 하나만 남습니다. ID의 입력 잡음이라면 정리가 도움이 되지만 문자열 자체를 검사하는 테스트라면 둘 다 필요할 수 있습니다. 공백이 데이터인지 잡음인지 먼저 정하세요.

정렬도 마찬가지입니다. 명단은 이름순이 편하지만 처리 절차나 우선순위 목록은 순서가 의미입니다. 나중에 붙인 줄 번호는 정리 후 위치이며 원본 줄 번호를 보장하지 않습니다. 출처를 추적해야 한다면 원문을 따로 남기고 변경을 비교하세요. 이 도구는 원본의 감사 이력을 저장하지 않습니다.

처음부터 모든 옵션을 켜기보다 빈 줄, 앞뒤 공백, 중복, 정렬을 차례로 확인하세요. 행 수가 예상과 다르면 마지막 작업을 살펴보면 됩니다. 공백 제거 후 완전 일치로 중복을 합치고 정렬했다고 설명하면 다른 사람도 재현할 수 있습니다. 보기 좋은 것보다 무엇을 같다고 보고 버렸는지가 중요합니다.

참고 자료

사용할 도구

가이드 →