Linux csplit command

Updated: 04/26/2017 by Computer Hope

About csplit

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


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

csplit syntax

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


-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.

csplit 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

cat — Output the contents of a file.
sed — A utility for filtering and transforming text.
split — Split a file into pieces.