CSPLIT(1P)
๐ CSPLIT(1P) โ the POSIX Programmer's Manual, but make it bestie ๐
okay so before we even get into it, quick heads up: this page is part of the POSIX Programmer's Manual, and the Linux implementation of this interface may differ (so if you're on Linux, go peek at the corresponding Linux manual page for the deets on how Linux actually behaves) โ or honestly, the interface might not even be implemented on Linux at all. ๐
โจ NAME โจ
csplit โ split files based on context
๐ธ SYNOPSIS ๐ธ
csplit [-ks] [-f prefix] [-n number] file arg...
๐ฆ DESCRIPTION ๐ฆ
So here's the tea, bestie: the csplit utility reads the file named by the file operand, writes all or part of that file into other files as directed by the arg operands, and then writes the sizes of the files. It's giving "cut the file up based on vibes and rules." โ๏ธ๐
๐ OPTIONS ๐
csplit conforms to the Base Definitions volume of POSIX.1โ2017, Section 12.2, Utility Syntax Guidelines. (iykyk)
These are the options it supports:
-f prefixโ name the created filesprefix00,prefix01, ...,prefixn. The default isxx00...xxn. โ ๏ธ BUT if theprefixargument would create a filename exceeding{NAME_MAX}bytes, an error happens,csplitexits with a diagnostic message, and no files get created. Like, zero. None. Don't test it.-kโ leave previously created files intact. By default,csplitremoves created files if an error occurs. So-kis the "pls don't delete my work" flag. ๐ฅบ-n numberโ usenumberdecimal digits to form filenames for the file pieces. The default is2.-sโ suppress the output of file size messages. Quiet queen behavior. ๐คซ
๐ OPERANDS ๐
Here's what you can hand it:
fileโ the pathname of a text file to be split. Iffileis'-', the standard input is used. ๐
Each arg operand can be one of the following:
/rexp/[offset]โ a file gets created using the content of the lines from the current line up to, but not including, the line that results from the evaluation of the regular expression withoffset, if any, applied. The regular expressionrexpfollows the rules for basic regular expressions described in the Base Definitions volume of POSIX.1โ2017, Section 9.3, Basic Regular Expressions. The application uses the sequence"\/"to specify a<slash>character within therexp. The optionaloffsetis a positive or negative integer value representing a number of lines. A positive integer value can be preceded by'+'. โ ๏ธ If the selection of lines from an offset expression of this type would create a file with zero lines, or one with greater than the number of lines left in the input file, the results are unspecified โ so like, don't. After the section is created, the current line gets set to the line that results from the evaluation of the regular expression with any offset applied. If the current line is the first line in the file and a regular expression operation has not yet been performed, the pattern match ofrexpis applied from the current line to the end of the file. Otherwise, the pattern match ofrexpis applied from the line following the current line to the end of the file. ๐%rexp%[offset]โ equivalent to/rexp/[offset], EXCEPT no file gets created for the selected section of the input file. Sneaky, silent, iconic. The application uses the sequence"\%"to specify a<percent-sign>character within therexp.line_noโ create a file from the current line up to (but not including) the line numberline_no. Lines in the file are numbered starting at one. The current line becomesline_no.{num}โ repeat operand. This one can follow any of the operands described above. If it follows arexptype operand, that operand gets appliednummore times. If it follows aline_nooperand, the file gets split everyline_nolines,numtimes, from that point. ๐
An error is reported if an operand does not reference a line between the current position and the end of the file. so like, stay in bounds bestie. ๐ง
๐ STDIN ๐
See the INPUT FILES section. (it's right below, don't worry)
๐ INPUT FILES ๐
The input file shall be a text file. simple as that.
๐ง ENVIRONMENT VARIABLES ๐ง
These are the environment variables that affect how csplit runs:
LANGโ provides a default value for the internationalization variables that are unset or null. (See the Base Definitions volume of POSIX.1โ2017, Section 8.2, Internationalization Variables for the precedence of internationalization variables used to determine the values of locale categories.)LC_ALLโ if set to a non-empty string value, override the values of all the other internationalization variables. it's the bossy one. ๐LC_COLLATEโ determines the locale for the behavior of ranges, equivalence classes, and multi-character collating elements within regular expressions.LC_CTYPEโ determines the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments and input files) and the behavior of character classes within regular expressions.LC_MESSAGESโ determines the locale that should be used to affect the format and contents of diagnostic messages written to standard error.NLSPATHโ determines the location of message catalogs for the processing ofLC_MESSAGES.
โก ASYNCHRONOUS EVENTS โก
If the -k option is specified, created files are retained. Otherwise, the default action occurs. that's it, that's the section. โจ
๐ STDOUT ๐
Unless the -s option is used, the standard output consists of one line per file created, formatted like this:
"%d\n", <file size in bytes>
๐ STDERR ๐
The standard error is used only for diagnostic messages. no small talk, no extra commentary.
๐ OUTPUT FILES ๐
The output files contain portions of the original input file; otherwise, unchanged.
๐ฅ EXTENDED DESCRIPTION ๐ฅ
None.
โญ EXIT STATUS โญ
These are the exit values:
0โ successful completion. we love to see it ๐>0โ an error occurred. ๐ญ
๐จ CONSEQUENCES OF ERRORS ๐จ
By default, created files are removed if an error occurs. When the -k option is specified, created files are not removed if an error occurs.
The following sections are informative. (translation: the juicy stuff is done, this is the bonus content)
๐ธ APPLICATION USAGE ๐ธ
None.
๐ EXAMPLES ๐
- This example creates four files,
cobol00...cobol03:
csplit -f cobol file '/procedure division/' /par5./ /par16./
After editing the split files, they can be recombined as follows:
cat cobol0[0-3] > file
Note that this example overwrites the original file. like, gone gone. back it up first bestie ๐ญ
- This example would split the file after the first 99 lines, and every 100 lines thereafter, up to 9999 lines; this is because lines in the file are numbered from 1 rather than zero, for historical reasons:
csplit -k file 100 {99}
- Assuming that
prog.cfollows the C-language coding convention of ending routines with a'}'at the beginning of the line, this example creates a file containing each separate C routine (up to 21) inprog.c:
csplit -k prog.c '%main(%' '/^}/+1' {20}
๐ญ RATIONALE ๐ญ
The -n option was added to extend the range of filenames that could be handled.
Consideration was given to adding a -a flag to use the alphabetic filename generation used by the historical split utility, but the functionality added by the -n option was deemed to make alphabetic naming unnecessary. so they simply didn't. periodt. ๐
๐ฎ FUTURE DIRECTIONS ๐ฎ
None.
๐ SEE ALSO ๐
sed, split
The Base Definitions volume of POSIX.1โ2017, Chapter 8, Environment Variables, Section 9.3, Basic Regular Expressions, Section 12.2, Utility Syntax Guidelines
๐ COPYRIGHT ๐
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .
Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .
and that's the whole page bestie!! ๐ this one came from IEEE/The Open Group, dated 2017, for CSPLIT(1P) โ go forth and split responsibly โจ๐ฆ๐
๐ฆ where this page comes from
- alpine 3.22: man-pages-posix 2017a-r0 ยท custom
- alpine 3.23: man-pages-posix 2017a-r0 ยท custom
- alpine 3.24: man-pages-posix 2017a-r0 ยท custom
- arch rolling: man-pages 6.19-1
- arch rolling: man-pages 6.20-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
- nixpkgs unstable: man-pages-posix 2017a
- opensuse-leap 16.0: man-pages-posix 2017a-160000.4.1 ยท SUSE-IEEE
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms