본문으로 바로가기
줄 정리
빈 줄 제거 · 공백 정리 · 중복 제거 · 정렬.
블로그

텍스트 줄 중복 제거와 정렬: 공백·순서까지 정확히

가상의 4줄 로그로 전체 중복 제거·연속 중복 제거·정렬 결과를 직접 비교합니다. 사라지는 횟수와 순서를 확인하고, 원본을 덮어쓰기 전에 점검하세요.

도구에서 예제 시험하기 →
이 글의 3가지 포인트

정정(2026-09-28): 공백 제거가 항상 켜져 있다는 설명과 입력 데이터의 절대적 안전을 암시한 표현을 바로잡았습니다.

  1. ①
    공백·중복은 별도로 켜기 기본값은 빈 줄 제거만 켜져 있습니다. 끝 공백을 무시하고 같은 줄을 합치려면 양끝 공백 제거와 중복 제거를 함께 켜세요.
  2. ②
    전체와 연속 중복은 다름 전체는 떨어진 반복까지 지우고, 연속은 바로 앞줄과 같은 반복만 접습니다.
  3. ③
    숫자·CSV는 별도 확인 item-10이 item-2보다 앞에 옵니다. 도구는 숫자 순서나 CSV 열별 중복을 판정하지 않습니다.

이메일 목록이나 로그를 받아 보면 빈 줄이 섞이고, 같은 항목이 여러 번 나오고, 줄 끝에 보이지 않는 공백이 붙어 있습니다. 엑셀에 넣어 중복 제거를 돌리거나 짧은 스크립트를 짜기엔 번거롭습니다. 줄 단위 정리는 붙여넣고 옵션 몇 개만 켜면 끝납니다.

빈 줄과 중복을 한 번에 정리하기

줄 정리의 기본은 네 가지 연산입니다. 빈 줄 제거, 양끝 공백 제거, 중복 제거, 정렬입니다. 따로 쓰기보다 함께 켤 때 강력합니다.

예를 들어 hello , 빈 줄, world, hello, 공백 줄이 섞인 텍스트가 있다고 합시다. PiPi Worlds 줄 정리 도구에서 양끝 공백 제거, 빈 줄 제거, 중복 제거, 오름차순 정렬을 켜면 결과는 hello, world 2줄로 줄어듭니다. 남은 줄 수가 실시간으로 표시되어, 원본이 몇 줄에서 몇 줄로 정리됐는지 바로 보입니다.

전체 중복과 연속 중복은 다르다

지워도 되는 반복인지 먼저 확인하기. 고유한 이름 목록을 만들 때는 같은 줄을 하나만 남겨도 됩니다. 하지만 오류가 몇 번 났는지, 어떤 순서로 일어났는지 보려는 로그라면 반복도 정보입니다. 줄 수가 줄었다는 사실만으로 정리가 잘됐다고 판단하지 마세요.

다음은 실제 서비스 로그가 아닌 가상의 네 줄입니다. 마지막 줄 뒤에 빈 줄은 없습니다. 이 블록을 복사해 줄 정리 도구에 넣어 보세요.

error-A
error-A
ok
error-A

각 비교는 직전 결과가 아니라 위 원본 네 줄에서 다시 시작합니다. 빈 줄 제거만 기본값으로 켜 두고, 공백 제거·대소문자 무시·줄번호는 끕니다.

전체 중복 제거: 종류만 남기기

‘중복 줄 제거’를 켜고 정렬은 ‘안 함’으로 둡니다. 결과는 두 줄입니다.

error-A
ok

원본에서 error-A는 세 번 나왔지만 결과에서는 한 번만 보입니다. 이 두 줄만으로 원래 발생 횟수나 ok 뒤의 재발을 복원할 수 없습니다. 고유 항목 목록에는 쓸 수 있지만 발생 건수를 세는 원본으로 덮어쓰지 마세요.

연속 중복만: 붙어 있는 반복 접기

‘중복 줄 제거’를 끄면 ‘연속 중복만’이 보입니다. 그것만 켜고 정렬은 ‘안 함’으로 둡니다. 결과는 세 줄입니다.

error-A
ok
error-A

떨어진 재등장은 남지만 처음 두 번의 반복은 한 번으로 접힙니다. 연속 제거도 빈도 집계 기능은 아닙니다.

정렬만: 순서가 바뀌는지 보기

두 중복 제거를 모두 끄고 정렬만 ‘오름차순’으로 고릅니다. 결과는 네 줄입니다.

error-A
error-A
error-A
ok

줄 수와 항목별 횟수는 그대로지만, 원본에서 ok 다음에 나왔던 error-A가 앞으로 이동했습니다. 이 결과를 발생 순서로 읽으면 안 됩니다. 시간·사람·사건의 의미를 이해해서 묶는 기능도 아닙니다.

원본을 덮어쓰기 전, 세 번 확인하기

  1. 원본은 별도로 남깁니다. 실제 개인정보·접속 토큰·내부 로그를 여기 붙이지 말고, 먼저 위 가상 예제로 옵션을 익히세요.
  2. 목적을 한 가지로 적습니다. 고유 항목만 필요한지, 연속 반복만 접을지, 횟수나 순서를 그대로 보존해야 하는지 구분합니다. 마지막 목적이라면 중복 제거·정렬을 켜지 않습니다.
  3. 결과는 다른 곳에 복사해 대조합니다. 줄 수만 보지 말고 첫 항목·마지막 항목·반복 구간을 원본과 비교하세요. 양끝 공백 제거도 들여쓰기를 없애므로 코드나 계층형 메모에는 무조건 적용하지 않습니다.

이 절차는 파일 백업이나 모든 형식의 무손실 변환을 보증하지 않습니다. 도구의 결과만으로 지워진 반복 횟수를 되찾을 수는 없습니다.

적용 순서가 결과를 좌우한다

자주 놓치는 부분입니다. 연산이 적용되는 순서가 정해져 있습니다.

켜 둔 옵션에 한해 양끝 공백 제거, 빈 줄 제거, 중복 제거, 정렬, 줄번호 순입니다. 기본값은 빈 줄 제거만 켜져 있습니다. apple과 apple (끝에 공백)은 서로 다른 줄이므로, 중복을 합치려면 양끝 공백 제거와 중복 줄 제거를 둘 다 켜야 합니다. Apple과 apple도 같은 줄로 보려면 ‘대소문자 무시 (중복·정렬)‘를 추가로 켭니다. 전체 중복 제거에서 남는 표기는 원본에 먼저 나온 쪽입니다.

정렬과 줄번호로 마무리하기

정리가 끝난 줄을 마지막으로 다듬는 두 가지가 정렬과 줄번호입니다.

정렬은 오름차순(A→Z)과 내림차순(Z→A) 중에서 고릅니다. 여기에 줄번호를 켜면 각 줄 앞에 1., 2., 3.이 차례로 붙습니다. 중복을 없애고 정렬한 목록에 번호까지 매기면, 문서나 메일에 그대로 붙일 번호 리스트가 한 번에 완성됩니다.

다만 숫자를 숫자 크기로 정렬하는 기능은 아닙니다. 이 도구의 문자 비교에서는 item-10이 item-2보다 앞에 옵니다. 주문번호나 파일명을 숫자 순서대로 나열해야 한다면 결과를 그대로 확정하지 마세요. 쉼표로 구분된 한 줄도 CSV 열로 해석하지 않고 줄 전체를 하나의 항목으로 다룹니다. 이메일 목록을 정리할 때도 주소만 비교하려는지, 이름과 주소가 함께 든 줄 전체를 비교하려는지 먼저 정해야 합니다.

그 목록, 어디서 정리하고 있나

마지막은 데이터가 머무는 곳 이야기입니다. 정리하려고 붙여넣는 줄에는 이메일 주소, 사번, 로그처럼 외부로 나가면 곤란한 값이 섞여 있는 경우가 많습니다.

PiPi Worlds 줄 정리 도구의 변환 코드는 입력 문장을 서버로 제출하지 않습니다. 페이지 조회·로딩 성능은 Cloudflare Web Analytics가 별도로 측정합니다(개인정보처리방침). 브라우저·확장 기능을 포함한 모든 환경에서 기밀이 안전하다는 보장은 아니므로, 실제 개인정보·비밀번호·접속 토큰·내부 로그는 가명화한 예제로 먼저 시험하세요. 윈도우와 맥에서 복사해 CRLF와 LF가 섞인 텍스트는 결과에서 LF로 정규화됩니다. 정리한 목록의 글자 수가 궁금하면 글자수 세기로 확인하세요. 줄마다 JSON 값이 있다면 JSON 포맷터에 한 줄씩 따로 넣어 검사해야 합니다. 여러 JSON 값을 통째로 붙여넣는 NDJSON 처리는 지원하지 않습니다.

자주 묻는 질문

전체 중복 제거와 연속 중복 제거는 무엇이 다른가요?
전체 중복 제거는 떨어져 있어도 같은 줄이면 첫 등장만 남기고 모두 없앱니다. 연속 중복 제거는 바로 윗줄과 같을 때만 지웁니다. 예를 들어 apple, apple, banana, apple을 전체 제거하면 apple, banana 2줄이 되고, 연속 제거하면 apple, banana, apple 3줄이 됩니다. 순서를 유지하며 연속 구간만 접고 싶을 때 연속 제거가 유용합니다.
연산은 어떤 순서로 적용되나요?
켠 옵션에 한해 양끝 공백 제거, 빈 줄 제거, 중복 제거, 정렬, 줄번호 순으로 적용됩니다. 양끝 공백 제거를 켜야 보이지 않는 줄 끝 공백까지 지운 뒤 중복을 검사합니다. 기본값에서는 공백 제거와 중복 제거가 꺼져 있습니다.
대소문자가 다른 줄도 같은 줄로 볼 수 있나요?
네. '대소문자 무시 (중복·정렬)'를 켜면 Apple과 apple을 같은 줄로 취급해 선택한 중복 제거와 정렬에 반영합니다. 전체 중복 제거에서는 먼저 등장한 표기가 남습니다.
윈도우 줄바꿈이 섞인 텍스트도 처리되나요?
네. CRLF, CR, LF 세 가지 줄바꿈을 모두 인식하며, 결과는 LF 줄바꿈으로 정규화됩니다. 윈도우와 맥에서 복사한 텍스트가 섞여도 한 번에 정리됩니다.
붙여넣은 텍스트가 서버로 전송되나요?
줄 변환에 입력한 텍스트를 서버로 제출하는 코드는 없습니다. 페이지 조회·성능 정보는 Cloudflare Web Analytics가 별도로 측정합니다. 브라우저 전체의 보안을 보장할 수는 없으므로 실제 개인정보·자격증명·내부 로그는 가명화한 예제로 먼저 확인하세요.

출처

검토 기록: Codex AI 코드·예제 검토 (사람에 의한 보안 감사가 아님)

이번 검토 범위 — 이번에는 가상의 4줄 로그로 전체·연속 중복 제거·정렬 결과를 대조하고 원본 보존 절차를 보완했습니다. 기존 외부 출처의 확인 날짜는 유지하며 보안 감사나 모든 입력 형식의 검증이 아닙니다.

확인 내역과 한계 펼쳐 보기

2026년 10월 15일에는 error-A, error-A, ok, error-A의 네 줄을 독립 예상값과 실제 processLines 결과로 대조했습니다. 아래는 9월 28일 검토 이력입니다. src/lib/devtools/lines.js의 옵션·정렬 비교식을 확인하고 실제 함수로 공백/중복/정렬 예제를 재현했습니다. 서버로 보내는 변환 코드는 없지만 브라우저·확장 기능을 포함한 전체 환경의 보안을 보장하지는 않습니다.

이 글에서 더한 것 — 가상의 4줄 로그를 전체 중복 제거·연속 중복 제거·정렬로 각각 처리해 사라지는 횟수와 순서를 비교했습니다. 원본과 결과를 분리하고 목적에 따라 옵션을 고르는 절차를 제공합니다. 공개 도구의 실제 연산 순서와 기본 선택 상태를 대조하고, 공백·대소문자·숫자형 식별자가 결과를 바꾸는 최소 예제를 직접 재현했습니다. 목록을 그대로 복사하기 전에 무엇을 확인해야 하는지 설명합니다.

검토 기록은 기재된 확인 내역이며, 독립적인 정확성 보증은 아닙니다.

도구로 돌아가기 →