Linux / 명령어 / csplit - 행 번호·패턴에서 파일 분할

csplit은 파일을 일정한 크기가 아니라 행 번호 또는 일치 패턴이 나타나는 위치에서 분할합니다. 섹션 경계가 있는 텍스트를 분리할 때 유용합니다.

csplit 명령어란?

분할 지점과 파일명 접두어를 명시하면 문서의 구조에 맞춘 조각을 만들 수 있습니다. 기본 출력 파일 이름은 xx00처럼 생성되므로 다른 작업 파일과 겹치지 않는 전용 디렉터리와 접두어를 사용하세요.

기본 문법

csplit [옵션] 입력파일 패턴 ...

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man csplit으로 현재 시스템의 설명을 확인하세요.

사용 예제

행 번호에서 분할

11행부터 둘째 파일이 시작됩니다. 첫 파일에는 앞 10행이 들어갑니다.

csplit -f part- notes.txt 11

패턴에서 분할

패턴이 나타나는 행부터 새 조각을 시작합니다.

csplit -f section- report.txt '/^Chapter /'

여러 일치에서 반복 분할

GNU {*} 반복 표기로 이후 일치를 계속 사용합니다.

csplit -f chapter- book.txt '/^Chapter /' '{*}'

패턴 기준으로 나뉜 파일 보기

csplit은 지정한 행 패턴이 시작되는 위치에서 입력을 나눕니다. -s는 기본적으로 출력되는 각 조각의 바이트 수를 숨깁니다.

printf 'one\nTWO\ntwo\n' > sample.txt
csplit -s -f part- sample.txt '/^TWO$/'
cat part-00
cat part-01

두 cat 명령을 차례로 실행한 예시 출력:

one
TWO
two

part-00에는 패턴 앞의 one, part-01에는 패턴 행부터 끝까지 들어갑니다. 패턴을 찾지 못하면 명령이 실패할 수 있고, 기존 분할 파일을 덮어쓸 수 있으므로 샘플 파일과 출력 접두사를 별도 작업 디렉터리에서 사용하세요.

주요 옵션과 형식

옵션·형식 설명
-f 접두어 출력 조각 파일명의 앞부분을 정합니다.
-n N 숫자 접미사의 자릿수를 정합니다.
-s 각 조각의 바이트 크기 출력을 숨깁니다.
-z 빈 출력 파일을 만들지 않습니다.
-k 오류가 나더라도 이미 만든 조각을 유지합니다.

사용할 때 주의할 점

패턴이 없거나 경계가 예상과 다르면 조각 개수와 위치가 달라집니다. 시험 입력에서 결과를 먼저 확인하고, 기존 이름의 출력 파일이 있는 디렉터리에서 실행하지 마세요. split과 달리 분할 규칙 자체가 파일 내용에 의존합니다.

자주 묻는 질문

split과 csplit 중 어느 것을 쓰나요?

크기·행 수로 균등하게 자르면 split, 특정 행 번호나 제목 패턴에서 자르면 csplit이 적합합니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 csplit 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / find - 조건으로 파일과 디렉터리 검색

Linux / 명령어 / find - 조건으로 파일과 디렉터리 검색

Linux find 명령어로 경로, 이름, 종류, 크기, 시간과 권한 조건을 조합해 파일을 찾는 방법을 설명합니다. 안전한 exec 사용과 삭제 전 검증도 다룹니다.

Linux / 명령어 / wget - URL에서 파일 내려받기

Linux / 명령어 / wget - URL에서 파일 내려받기

Linux wget 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / Memo

Linux / Memo

리눅스와 관련된 여러 정보를 정리합니다.

Linux / 명령어 / cut - 행에서 문자와 필드 추출

Linux / 명령어 / cut - 행에서 문자와 필드 추출

Linux cut 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux ping 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / less - 긴 파일을 검색하며 페이지 단위로 보기

Linux / 명령어 / less - 긴 파일을 검색하며 페이지 단위로 보기

Linux less 명령어로 긴 텍스트와 명령 출력을 페이지 단위로 탐색하는 방법을 설명합니다. 검색, 이동, 실시간 갱신과 파이프 사용법을 정리합니다.

Linux / 명령어 / systemctl - systemd 서비스 상태 확인과 관리

Linux / 명령어 / systemctl - systemd 서비스 상태 확인과 관리

Linux systemctl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / column - 텍스트를 읽기 좋은 표 형태로 정렬

Linux / 명령어 / column - 텍스트를 읽기 좋은 표 형태로 정렬

Linux column 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

diff와 cmp로 두 파일의 차이를 확인하고 unified diff를 읽는 법을 익힙니다. 내용이 다른 경우와 명령 실행 오류의 종료 상태도 구별합니다.

Linux / 명령어 / ss - 열린 포트와 소켓 연결 상태 확인

Linux / 명령어 / ss - 열린 포트와 소켓 연결 상태 확인

Linux ss 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.