Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

/red(1)

sh(1)

split(1)

regexp(3)

csplit(1)  —  Commands

NAME

csplit − Splits files by context

SYNOPSIS

csplit [-f prefix] [-ks] [-nnumber] file | - arg1...argn

The csplit command reads the specified file and separates it into segments defined by the specified arguments. 

FLAGS

-f prefixSpecifies the prefix name (xx by default) for the created file segments. 

-kLeaves previously created file segments intact in the event of an error. 

-n number
Uses number decimal digits to form filenames for the file pieces. The default is 2. 

-sSuppresses the display of file size messages. 

DESCRIPTION

If you specify - in place of the input filename, csplit reads from standard input. 

By default, csplit writes the file segments to files named xx00 ...xxn, where n is the number of arguments listed on the command line (n may not be greater than 99).  These new files get the following pieces of file:

00From the start of file up to, but not including, the line referenced by the first argument. 

01From the line referenced by the first argument up to the line referenced by the second argument. 

n+1From the line referenced by the last argument to the end of file. 

The csplit command does not alter the original file. 

The operands arg1...argn can be a combination of the following:

/pattern/[offset]
Creates a file using the contents of the lines from the current line up to, but not including, the line that results from the evaluation of the regular expression with an offset, if included. The offset argument can be any integer (positive or negative) that represents a number of lines. 

%pattern%[offset]
Has the same effect as /pattern/, except that no segment file is created. 

+number

-numberMoves forward or backward the specified number of lines from the line matched by an immediately preceding pattern argument (for example, /Page/-5). 

line_number
Creates a file containing the segment from the current line up to, but not including, line_number, which becomes the current line. 

{number}
Repeats the preceding argument the specified number of times.  This number can follow any of the pattern or line_number arguments.  If it follows a pattern argument, csplit reuses that pattern the specified number of times.  If it follows a line_number argument, csplit splits the file from that point every line_number of lines for number times. 

Quote all pattern arguments that contain spaces or other characters special to the shell.  Patterns may not contain embedded newline characters. 

See grep for information about creating patterns.  In an expression such as [a-z], the dash means "through" according to the current collating sequence.  The collating sequence is determined by the value of the LC_COLLATE environment variable. 

EXAMPLES

     1.To split the text of a book into a separate file for each chapter, enter:

csplit book "/^Chapter ∗[0-9]/" {9}

This creates files named xx00, xx01, xx02,...,xx09, which contain individual chapters of the file book.  Each chapter begins with a line that contains only the word Chapter and the chapter number.  The file xx00 contains the front matter that comes before the first chapter.  The {9} after the pattern causes csplit to create up to 9 individual chapters; the remainder are placed in xx10. 

     2.To specify the prefix for the created filenames, enter:

csplit -f chap book "/^Chapter ∗[0-9]/" {9}

This splits book into files named chap00, chap01,...chap9, chap10. 

RELATED INFORMATION

Commands:  ed(1)/red(1), sh(1), split(1). 

Files: regexp(3). 

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026