개요
csplit은 입력 파일을 지정된 패턴이나 줄 번호에 따라 여러 개의 출력 파일로 나눕니다. 각 출력 파일은 원본 파일의 연속된 섹션을 포함하며, 파일 이름은 지정된 접두사와 숫자 접미사로 구성됩니다.
주요 특징
- 정규 표현식 또는 줄 번호 기반 분할
- 출력 파일명 접두사 및 숫자 형식 지정 가능
- 대용량 파일의 특정 섹션 추출 및 관리 용이
주요 옵션
출력 파일 제어
분할 동작 제어
생성된 명령어:
명령어를 조합해 보세요.
설명:
`csplit` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
줄 번호를 기준으로 파일 분할
echo -e "$(seq 1 35)" > test.txt
csplit test.txt 10 20 30
test.txt 파일을 10번째, 20번째, 30번째 줄을 기준으로 분할합니다. (예: xx00: 1-9줄, xx01: 10-19줄, xx02: 20-29줄, xx03: 30줄부터 끝까지)
정규 표현식을 기준으로 파일 분할
echo -e "Line 1\nLine 2\nERROR: First error\nLine 4\nLine 5\nERROR: Second error\nLine 7" > log.txt
csplit -f part_ log.txt '/^ERROR:/' '{*}'
log.txt 파일을 '^ERROR:'로 시작하는 줄을 기준으로 분할하고, 파일 접두사를 'part_'로 지정합니다. '{*}'는 나머지 모든 내용을 하나의 파일로 묶으라는 의미입니다.
접두사와 자릿수 지정하여 분할
echo -e "[Section 1]\nContent A\n[Section 2]\nContent B\n[Section 3]\nContent C" > data.log
csplit -f my_file_ -n 3 data.log '/^\[Section \d+\]/' '{*}'
data.log 파일을 '[Section N]' 패턴으로 분할하고, 파일명을 'my_file_000', 'my_file_001' 등으로 생성합니다.
매칭 줄을 제외하고 분할
echo -e "Line 1\nERROR: First error\nLine 3\nERROR: Second error" > log.txt
csplit --suppress-match -f no_error_ log.txt '/^ERROR:/' '{*}'
log.txt 파일을 '^ERROR:' 패턴으로 분할하되, 'ERROR:'로 시작하는 줄은 각 분할 파일에 포함하지 않습니다.
팁 & 주의사항
csplit 명령어는 강력하지만, 정규 표현식 사용에 주의해야 합니다.
유용한 팁
- 정규 표현식 사용 시 따옴표로 감싸서 셸의 해석을 방지하세요.
- 분할 기준이 되는 줄은 기본적으로 다음 파일의 첫 줄이 됩니다. `--suppress-match` 옵션으로 해당 줄을 제외할 수 있습니다.
- '{*}'는 나머지 파일을 모두 하나의 파일로 묶으라는 의미입니다. 이 옵션이 없으면 마지막 분할 기준 이후의 내용은 버려집니다.
주의사항
- 원본 파일 변경 없음: csplit은 원본 파일을 변경하지 않고 새로운 분할 파일을 생성합니다.
- 오류 처리: 정규 표현식이 일치하지 않거나 줄 번호가 유효하지 않으면 오류가 발생할 수 있습니다. 특히 정규 표현식은 정확하게 작성해야 합니다.