csplit — 패턴 기준 분할
Linux / 리눅스 기본 명령어 / csplit.html
정규식이나 줄 번호를 기준으로 파일을 여러 구간으로 나누는 명령어.
기본 정보
| 명령어 이름 | csplit |
|---|---|
| 한 줄 소개 | 정규식이나 줄 번호를 기준으로 파일을 여러 구간으로 나누는 명령어. |
| 제공 | GNU coreutils |
| 공식 문서 | https://man7.org/linux/man-pages/man1/csplit.1.html |
| 지원 운영체제 | Linux, macOS, BSD |
| 설치 여부 | 기본 탑재 |
| 분류 | 리눅스 기본 명령어 (태그: 리눅스 기본 명령어 (태그: csplit, 분할, 정규식, 구간)) |
이 명령어는 무엇인가?
csplit은 파일을 고정 크기로 자르는 split과 달리, 정규식이나 줄 번호가 나타나는 지점에서 나눕니다. 로그에서 세션 시작 지점마다 파일을 분리할 때 유용합니다.
패턴은 /정규식/ 형태로 지정하고, {n}으로 반복 횟수를, {*}로 끝까지 반복을 의미합니다. 패턴이 일치하지 않으면 해당 구간이 생성되지 않으므로 실제 데이터로 먼저 확인하는 것이 좋습니다.
어떤 문제를 해결하는가?
- 로그를 세션 시작 표시마다 분리할 때
- 한 파일에 여러 문서가 이어져 있을 때
- 줄 번호 기준으로 구간을 나눌 때
- split으로는 경계를 맞출 수 없을 때
주요 기능
패턴 분할
/정규식/이 나오는 줄부터 새 파일을 시작합니다.
- 활용 상황: 반복되는 구분자를 기준으로 나눌 때
- 얻는 결과: 내용 경계를 정확히 지킬 수 있습니다.
- 제한 사항: 패턴이 없으면 파일이 만들어지지 않습니다.
반복 지정
{n}과 {*}로 분할 횟수를 제어합니다.
- 활용 상황: 구간 수를 미리 알 때
- 얻는 결과: 불필요한 분할을 막을 수 있습니다.
- 제한 사항: 횟수를 잘못 지정하면 마지막 구간이 뭉칩니다.
출력 이름
접두사와 형식을 지정해 파일명을 만듭니다.
- 활용 상황: 후속 처리에서 이름 규칙이 필요할 때
- 얻는 결과: 스크립트 연동이 쉬워집니다.
- 제한 사항: 기존 파일을 덮어쓸 수 있습니다.
설치 및 실행
설치 여부 확인
csplit --version
sudo apt install coreutils # Debian/Ubuntu sudo dnf install coreutils # Fedora
실제 사용 예제
세션별 분리
START 줄마다 새 파일을 만듭니다.
csplit app.log '/^START/' '{*}'
줄 번호로 분할
100번째 줄 앞에서 나눕니다.
csplit notes.txt 100
구간 수 제한
두 번만 나눕니다.
csplit app.log '/^START/' '{2}'