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 관련 공식 문서에서 확인할 수 있습니다.









