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 / 명령어 / realpath - 절대 경로와 실제 경로 확인

Linux / 명령어 / realpath - 절대 경로와 실제 경로 확인

Linux realpath 명령어로 상대 경로와 심볼릭 링크를 정규화하고 절대·상대 경로를 출력하는 방법을 설명합니다. 경로 존재 조건과 보안상 주의점도 함께 정리합니다.

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

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

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

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

웹 서버용 리눅스 추천: Ubuntu, Debian, Rocky Linux 선택 기준

웹 서버용 리눅스 추천: Ubuntu, Debian, Rocky Linux 선택 기준

웹 서버용 Linux 배포판을 지원 기간, 패키지 생태계, 보안 정책과 운영 환경 기준으로 비교합니다. Ubuntu Server, Debian, Rocky Linux·AlmaLinux와 Amazon Linux 중 상황에 맞는 선택법을 정리합니다.

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux tac 명령어로 파일의 줄 순서를 뒤집어 마지막 줄부터 출력하는 방법을 설명합니다. 여러 파일 처리, 구분자 변경과 로그 확인 예제를 함께 정리합니다.

Linux / 명령어 / gunzip - gzip 압축 파일 풀기

Linux / 명령어 / gunzip - gzip 압축 파일 풀기

Linux gunzip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

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

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

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

Linux / 명령어 / sudo - 다른 사용자 권한으로 명령 실행

Linux / 명령어 / sudo - 다른 사용자 권한으로 명령 실행

Linux sudo 명령어로 허용된 명령을 root 또는 다른 사용자 권한으로 실행하는 방법을 설명합니다. 주요 옵션, 인증 캐시, 리디렉션 문제, visudo와 최소 권한 sudoers 설정 원칙을 정리합니다.

Linux / 명령어 / who - 현재 로그인 세션 확인

Linux / 명령어 / who - 현재 로그인 세션 확인

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

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

PID와 PPID의 의미와 부모·자식 프로세스의 관계를 설명합니다. ps와 pgrep으로 확인하고, 직접 만든 실습 프로세스를 안전하게 종료하는 방법을 익힙니다.