> 텍스트 처리 및 검색 > csplit

csplit: 파일 내용을 기준으로 분할

csplit 명령어는 파일의 내용을 특정 패턴(정규 표현식)이나 줄 번호를 기준으로 여러 개의 작은 파일로 분할하는 데 사용됩니다. 대용량 로그 파일이나 소스 코드를 특정 섹션별로 나누어 분석하거나 관리할 때 유용합니다.

개요

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은 원본 파일을 변경하지 않고 새로운 분할 파일을 생성합니다.
  • 오류 처리: 정규 표현식이 일치하지 않거나 줄 번호가 유효하지 않으면 오류가 발생할 수 있습니다. 특히 정규 표현식은 정확하게 작성해야 합니다.

동일 카테고리 명령어