Linux and Unix csplit command

Quick links

About csplit
Syntax
Examples
Related commands
Linux and Unix main page

About csplit

csplit splits a file into sections, based on context lines.

Syntax

csplit [OPTION]... FILE PATTERN...

Description

Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ..., and output byte counts of each piece to standard output.

Options

-b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d.
-f, --prefix=PREFIX use PREFIX instead of 'xx'.
-k, --keep-files do not remove output files on errors.
-n, --digits=DIGITS use specified number of digits instead of 2.
-s, --quiet, --silent do not print counts of output file sizes.
-z, --elide-empty-files remove empty output files.
--help display a help message and exit.
--version output version information and exit.

csplit reads standard input if FILE is specified as a dash ("-"). Each PATTERN may be:

INTEGER copy up to but not including specified line number.
/REGEXP/[OFFSET] copy up to but not including a matching line.
%REGEXP%[OFFSET] skip to, but not including a matching line.
{INTEGER} repeat the previous pattern specified number of times.
{*} repeat the previous pattern as many times as possible.

A line OFFSET is a required '+' or '-' followed by a positive integer.

Examples

csplit -f cobol filename '/procedure division/' /par5./ /par16./

Creates four files, cobol00...cobol03.

After editing the split files, they can be recombined into filename using the cat command as follows:

cat cobol0[0-3] > filename

Related commands

cat
sed
split