csplit

Split a file into context-determined pieces. csplit splits file into pieces using the patterns args. If file is a dash
(-), csplit will read from standard input.

Syntax
      csplit [-ks] [-f prefix] [-n number] file args ...

Options
     -f prefix
             Give created files names beginning with prefix.  The default is `xx'.

     -k      Do not remove output files if an error occurs or a HUP, INT or TERM signal is
             received.

     -n number
             Use number of decimal digits after the prefix to form the file name.
             The default is 2.

     -s      Do not write the size of each output file to standard output as it is created.

     The args operands can be a combination of the following patterns:

     /regexp/[[+|-]offset]
             Create a file containing the input from the current line to (but not including)
             the next line matching the given basic regular expression.  An optional offset
             from the line that matched can be specified.

     %regexp%[[+|-]offset]
             Same as above but a file is not created for the output.

     line_no
             Create containing the input from the current line to (but not including) the
             specified line number.

     {num}   Repeat the previous pattern the specified number of times.  If it follows a line
             number pattern, a new file will be created for each line_no lines, num times.
             The first line of the file is line number 1 for historic reasons.

After all the patterns have been processed, the remaining input data (if there is any) will be written to a new file.

Requesting to split at a line before the current line number or past the end of the file will result in an error.

ENVIRONMENT
The LANG, LC_ALL, LC_COLLATE and LC_CTYPE environment variables affect the execution of csplit as described in environ(7).

Exit Status
The csplit utility exits 0 on success, and >0 if an error occurs.

Examples

Split the mdoc(7) file foo.1 into one file for each section (up to 20):
csplit -k foo.1 '%^\.Sh%' '/^\.Sh/' '{20}'

Split standard input after the first 99 lines and every 100 lines thereafter:
csplit -k - 100 '{19}'

“I was the only kid in the audience who didn’t understand why Dorothy would ever want to go home. It was a mystery to me. To that awful black and white farm, with that aunt who was dressed badly, with smelly farm animals around. When she could live with winged monkeys and magic shoes and gay lions. I didn’t get it” ~ John Waters

Related macOS commands:

sed - Stream Editor.
split - Split a file into fixed-size pieces.
re_format(7).


 
Copyright © 1999-2020 SS64.com
Some rights reserved