텍스트 정리 가이드
의미를 잃지 않고 텍스트 빈 줄 제거하기
복사한 문장, 로그, 목록 또는 코드에 필요 이상으로 빈 공간이 생겼다면 줄의 의미를 먼저 확인하세요. 모든 빈 줄을 지울지, 반복되는 간격만 줄일지에 따라 방법이 달라집니다.
텍스트 빈 줄을 안전하게 제거하는 방법
텍스트 빈 줄 제거를 시작하기 전에 빈 줄의 기준을 정하세요. 실제 빈 줄은 문자를 전혀 포함하지 않습니다. 공백, 탭 또는 줄바꿈하지 않는 공백만 있는 줄도 화면에서는 비어 보이지만 단순한 검색에서는 남을 수 있습니다. 여러 운영체제에서 가져온 텍스트라면 줄 끝을 통일한 뒤 보이는 문자가 없는 줄만 대상으로 삼으세요.
한 번만 정리할 때는 원본을 복사하고, 모두 삭제할지 반복되는 간격을 하나로 줄일지 선택한 다음 결과를 비교합니다. 반복 작업에는 각 줄을 필터링하는 정규식이나 작은 스크립트가 유용합니다. 문단 사이의 한 줄이 읽기에 필요하다면 유지하세요. 모든 빈 줄을 지우면 서로 다른 내용이 붙을 수 있습니다.
- 코드 목록, 이메일, ID, 가져오기 데이터, 압축 로그는 모든 빈 줄을 제거합니다.
- 문서, 메모, Markdown은 여러 빈 줄을 한 줄로 줄입니다.
- 코드 조각이나 템플릿은 앞뒤만 정리하고 내부 빈 줄은 남길 수 있습니다.
어떤 줄을 빈 줄로 볼까
화면에 보이는 모양만으로는 판단하기 어렵습니다. 줄 안에 공백, 탭 또는 웹페이지에서 복사한 보이지 않는 문자가 있을 수 있습니다. 길이가 0인 문자열만 찾는 규칙은 이런 줄을 놓칠 수 있으므로, 공백만 있는 줄을 포함할지 먼저 정해야 합니다.
줄 끝 형식도 결과에 영향을 줍니다. Windows는 보통 CRLF, Unix 계열은 LF를 사용하며, 오래된 파일에는 CR이 남아 있을 수 있습니다. 복사한 내용에 형식이 섞였다면 처리 전에 통일해야 한 종류의 줄바꿈만 지워지는 문제를 피할 수 있습니다.
| 입력 줄 | 보이는 모습 | 권장 처리 |
|---|---|---|
| 문자 없이 줄바꿈만 두 개 | 빈 줄 | 전체 삭제 모드라면 제거합니다. |
| 공백이나 탭만 포함 | 빈 줄처럼 보임 | 복사·내보내기 데이터에서는 빈 줄로 처리합니다. |
| 문단을 나누는 줄 | 의도된 간격 | 가독성에 필요하면 한 줄을 남깁니다. |
| 제어 문자나 제로 폭 문자 | 비어 보임 | 반복하기 전에 실제 문자를 확인합니다. |
편집 전에 정리 모드 선택하기
빈 줄 제거라는 말은 서로 다른 세 가지 결과를 뜻할 수 있습니다. 문단 구분이 필요한 글에 강한 패턴을 적용하기 전에 목표를 고르면 실수를 줄일 수 있습니다. 파일을 직접 수정하는 명령을 사용할 때는 원본 복사본을 남기세요.
| 모드 | 적합한 용도 | 남는 것 |
|---|---|---|
| 모두 제거 | 값 목록, 가져오기, 압축 로그 | 내용이 있는 줄을 원래 순서로 유지 |
| 반복 간격 줄이기 | 문서, 메모, Markdown, 안내서 | 블록 사이에 최대 한 줄 유지 |
| 가장자리 정리 | 코드, 템플릿, 인용문 | 내부 간격은 유지하고 시작·끝 여백만 제거 |
편집기와 정규식으로 빈 줄 제거하기
대부분의 코드 편집기는 찾기 및 바꾸기에서 정규식을 지원합니다. JavaScript 방식의 편집기에서는 줄의 시작, 선택적인 공백, 줄을 끝내는 줄바꿈을 함께 찾는 패턴을 사용할 수 있습니다. 작은 선택 영역에서 먼저 결과를 확인하고 실행 취소가 가능한 상태로 진행하세요.
반복된 빈 줄을 하나로 줄이려면 줄바꿈 묶음을 찾아 필요한 개수로 바꿉니다. LF만 가정한 패턴은 CRLF 파일에서 다르게 작동할 수 있으므로 줄 끝을 통일하거나 편집기가 제공하는 줄바꿈 토큰을 사용하세요.
찾기: ^\s*\n
바꾸기: (비워 둠)
반복 간격 줄이기:
찾기: (\r?\n){3,}
바꾸기: \n\n
정규식을 켜고 일치 항목을 확인한 뒤 가능하면 선택 영역에만 적용합니다.
반복 파일은 셸 명령으로 처리하기
큰 텍스트 파일이나 자동화 파이프라인에서는 셸 명령이 검토와 반복에 편리합니다. 먼저 새 출력 파일로 작성해 원본을 보존하세요. 아래 예시는 공백과 탭만 있는 줄도 빈 줄로 취급하므로 데이터에 다른 공백 문자가 있다면 문자 클래스를 조정합니다.
첫 번째 명령은 공백이 아닌 문자가 있는 줄만 남깁니다. Unix 계열에서는 sed도 사용할 수 있습니다. 줄 순서는 유지하지만 Markdown, 코드 문법, 문단의 의도까지 해석하지는 않습니다.
grep -v '^[[:space:]]*$' input.txt > output.txt
# sed 방식
sed '/^[[:space:]]*$/d' input.txt > output.txt
# 반복된 빈 줄을 하나로 축소
cat -s input.txt > output.txt
Python 또는 JavaScript로 줄 필터링하기
가져오기나 테스트의 일부로 정리해야 한다면 작은 스크립트가 적합합니다. 텍스트를 논리적인 줄로 나누고, 공백을 제거한 내용이 비어 있지 않은 줄만 남긴 뒤 다음 시스템이 기대하는 줄 끝으로 다시 연결합니다. 공백 규칙이 코드에 드러나므로 설정을 잊기 어렵습니다.
Python 예시는 내용이 없는 줄을 제거합니다. JavaScript 예시는 CRLF와 CR을 LF로 통일한 뒤 필터링합니다. 두 방법 모두 새 문자열을 반환하므로 삭제 수를 기록하고 원본을 덮어쓰기 전에 차이를 검토할 수 있습니다.
# Python: 빈 줄과 공백 줄 제거
cleaned = \"\n\".join(line for line in text.splitlines() if line.strip())
// JavaScript: 줄 끝을 통일한 뒤 필터링
const normalized = text.replace(/\r\n/g, \"\n\").replace(/\r/g, \"\n\");
const cleaned = normalized.split(\"\n\").filter(line => line.trim() !== \"\").join(\"\n\");
숫자만 보지 말고 결과 확인하기
정리 후에는 첫 번째와 마지막 유효한 줄, 전체 줄 수, 다음 단계에 필요한 경계를 비교하세요. 가져오기 데이터는 한 줄에 한 값이어야 합니다. Markdown은 코드 블록과 문단을 유지해야 합니다. 로그에서는 제어 문자가 있다는 이유만으로 시간 표시 줄을 삭제하지 않았는지 살펴보세요.
빈 줄이 남는다면 해당 줄의 문자를 확인합니다. 줄바꿈하지 않는 공백, 제로 폭 문자, 폼 피드, 특수한 Unicode 구분자는 단순한 패턴과 일치하지 않을 수 있습니다. 문단이 붙었다면 실행을 취소하고 반복 간격 줄이기 모드를 사용하세요. 다른 시스템의 줄 수가 다르면 줄 끝 형식과 마지막 줄바꿈 처리도 확인해야 합니다.
마지막으로 원본과 정리된 텍스트를 Line Counter에서 세어 보세요. 줄 미리보기로 공백만 있는 줄을 확인하고 Character Counter로 보이지 않는 문자로 인한 차이를 찾을 수 있습니다.
- 전후 줄 수를 비교하고 삭제된 줄 수를 기록합니다.
- 코드, 설정, 데이터는 diff로 확인합니다.
- 읽기에 필요한 문단 구분 줄은 남깁니다.
- 시스템을 바꿀 때 인코딩과 줄 끝 형식을 확인합니다.
안전한 네 단계 흐름
붙여 넣은 텍스트나 다른 시스템으로 보낼 파일에는 다음 순서를 사용하세요.
- 1. 복사본 만들기범위가 너무 넓은 치환을 되돌릴 수 있도록 원본을 보관합니다.
- 2. 빈 줄 정의하기공백, 탭, 줄바꿈하지 않는 공백, 섞인 줄 끝을 대상에 포함할지 정합니다.
- 3. 모드 선택하기데이터는 모두 제거, 문서는 반복 간격 줄이기, 조각은 가장자리 정리를 선택합니다.
- 4. 검토하고 측정하기diff와 양 끝 줄을 확인하고 공유 전에 줄 수를 비교합니다.
규칙을 확인한 자료
문자열의 표준 동작과 줄 분리 규칙을 이해하는 데 도움이 되는 자료입니다.
- MDN: String.prototype.trim()JavaScript가 줄의 앞뒤 공백을 제거하는 방식을 설명합니다.
- Python: str.splitlines()Python이 인식하는 텍스트 줄 경계를 정리합니다.
- VS Code 빈 줄 정규식 토론줄 끝과 공백이 치환 결과에 미치는 영향을 보여주는 커뮤니티 사례입니다.
빈 줄 제거 FAQ
빈 줄과 공백 줄은 어떻게 다른가요?
빈 줄은 문자를 포함하지 않습니다. 공백 줄은 공백이나 탭 같은 보이지 않는 문자를 포함할 수 있습니다. 공백을 제거한 내용이 비어 있으면 줄 끝 줄바꿈과 함께 처리하세요.
일반 줄을 붙이지 않고 빈 줄만 제거하려면?
모든 줄바꿈이 아니라 보이는 내용이 없는 줄만 대상으로 합니다. 줄 필터나 ^\s*\n 같은 정규식은 의미 있는 줄 사이의 줄바꿈을 유지합니다.
문서의 빈 줄을 모두 지워도 되나요?
대부분은 권장하지 않습니다. 문단 사이의 한 줄은 가독성을 높이므로 남기고, 반복되는 과도한 간격만 줄이세요.
정규식을 써도 빈 줄이 남는 이유는 무엇인가요?
탭, 줄바꿈하지 않는 공백, CRLF와 LF 혼합, 제로 폭 문자가 원인일 수 있습니다. 남은 줄을 확인하고 줄 끝을 통일한 뒤 줄바꿈까지 포함해 매칭하세요.
CSV나 목록의 빈 줄도 지울 수 있나요?
대상 시스템에서 빈 레코드에 의미가 없다면 가능합니다. 복사본을 만들고 순서를 유지한 뒤 diff 또는 줄 수로 확인하고 가져오세요.
스크립트로 파일을 안전하게 정리하는 방법은?
파일을 읽어 새 출력을 만들고 입력·출력 줄 수를 기록한 다음 차이를 검토하고 원본을 교체합니다.
다음 확인
정리 후 줄 수 확인하기
원본 또는 정리한 텍스트를 Line Counter에 붙여 넣고 브라우저에서 줄 변화를 확인하세요.