CSPLIT(1)                  POSIX Programmer's Manual                 CSPLIT(1)



PPRROOLLOOGG
       This manual page is part of the POSIX Programmer's Manual.  The OS
       implementation of this interface may differ (consult the corresponding
       OS manual page for details of OS behavior), or the interface may not be
       implemented on OS.

NNAAMMEE
       csplit -- split files based on context

SSYYNNOOPPSSIISS
       csplit [[-ks]] [[-f _p_r_e_f_i_x]] [[-n _n_u_m_b_e_r]] _f_i_l_e _a_r_g...

DDEESSCCRRIIPPTTIIOONN
       The _c_s_p_l_i_t utility shall read the file named by the _f_i_l_e operand, write
       all or part of that file into other files as directed by the _a_r_g
       operands, and write the sizes of the files.

OOPPTTIIOONNSS
       The _c_s_p_l_i_t utility shall conform to the Base Definitions volume of
       POSIX.1-2017, _S_e_c_t_i_o_n _1_2_._2, _U_t_i_l_i_t_y _S_y_n_t_a_x _G_u_i_d_e_l_i_n_e_s.

       The following options shall be supported:

       --ff _p_r_e_f_i_x Name the created files _p_r_e_f_i_x0000, _p_r_e_f_i_x0011, ..., _p_r_e_f_i_x_n.  The
                 default is xxxx0000 ...  xxxx_n.  If the _p_r_e_f_i_x argument would
                 create a filename exceeding {NAME_MAX} bytes, an error shall
                 result, _c_s_p_l_i_t shall exit with a diagnostic message, and no
                 files shall be created.

       --kk        Leave previously created files intact. By default, _c_s_p_l_i_t
                 shall remove created files if an error occurs.

       --nn _n_u_m_b_e_r Use _n_u_m_b_e_r decimal digits to form filenames for the file
                 pieces. The default shall be 2.

       --ss        Suppress the output of file size messages.

OOPPEERRAANNDDSS
       The following operands shall be supported:

       _f_i_l_e      The pathname of a text file to be split. If _f_i_l_e is ''--'', the
                 standard input shall be used.

       Each _a_r_g operand can be one of the following:

       /_r_e_x_p/[[_o_f_f_s_e_t]]
                 A file shall be 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 with
                 _o_f_f_s_e_t, if any, applied. The regular expression _r_e_x_p shall
                 follow the rules for basic regular expressions described in
                 the Base Definitions volume of POSIX.1-2017, _S_e_c_t_i_o_n _9_._3,
                 _B_a_s_i_c _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s.  The application shall use the
                 sequence ""\\//"" to specify a <slash> character within the _r_e_x_p.
                 The optional offset shall be 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 _o_f_f_s_e_t 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. After the
                 section is created, the current line shall be 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 of _r_e_x_p shall be
                 applied from the current line to the end of the file.
                 Otherwise, the pattern match of _r_e_x_p shall be applied from
                 the line following the current line to the end of the file.

       %_r_e_x_p%[[_o_f_f_s_e_t]]
                 Equivalent to /_r_e_x_p/[[_o_f_f_s_e_t]], except that no file shall be
                 created for the selected section of the input file. The
                 application shall use the sequence ""\\%%"" to specify a
                 <percent-sign> character within the _r_e_x_p.

       _l_i_n_e___n_o   Create a file from the current line up to (but not including)
                 the line number _l_i_n_e___n_o.  Lines in the file shall be numbered
                 starting at one. The current line becomes _l_i_n_e___n_o.

       {_n_u_m}     Repeat operand. This operand can follow any of the operands
                 described previously. If it follows a _r_e_x_p type operand, that
                 operand shall be applied _n_u_m more times. If it follows a
                 _l_i_n_e___n_o operand, the file shall be split every _l_i_n_e___n_o lines,
                 _n_u_m times, from that point.

       An error shall be reported if an operand does not reference a line
       between the current position and the end of the file.

SSTTDDIINN
       See the INPUT FILES section.

IINNPPUUTT FFIILLEESS
       The input file shall be a text file.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
       The following environment variables shall affect the execution of
       _c_s_p_l_i_t:

       _L_A_N_G      Provide a default value for the internationalization
                 variables that are unset or null. (See the Base Definitions
                 volume of POSIX.1-2017, _S_e_c_t_i_o_n _8_._2, _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n
                 _V_a_r_i_a_b_l_e_s for the precedence of internationalization
                 variables used to determine the values of locale categories.)

       _L_C___A_L_L    If set to a non-empty string value, override the values of
                 all the other internationalization variables.

       _L_C___C_O_L_L_A_T_E
                 Determine the locale for the behavior of ranges, equivalence
                 classes, and multi-character collating elements within
                 regular expressions.

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

       _L_C___M_E_S_S_A_G_E_S
                 Determine the locale that should be used to affect the format
                 and contents of diagnostic messages written to standard
                 error.

       _N_L_S_P_A_T_H   Determine the location of message catalogs for the processing
                 of _L_C___M_E_S_S_A_G_E_S.

AASSYYNNCCHHRROONNOOUUSS EEVVEENNTTSS
       If the --kk option is specified, created files shall be retained.
       Otherwise, the default action occurs.

SSTTDDOOUUTT
       Unless the --ss option is used, the standard output shall consist of one
       line per file created, with a format as follows:


           "%d\n", <_f_i_l_e _s_i_z_e _i_n _b_y_t_e_s>

SSTTDDEERRRR
       The standard error shall be used only for diagnostic messages.

OOUUTTPPUUTT FFIILLEESS
       The output files shall contain portions of the original input file;
       otherwise, unchanged.

EEXXTTEENNDDEEDD DDEESSCCRRIIPPTTIIOONN
       None.

EEXXIITT SSTTAATTUUSS
       The following exit values shall be returned:

        0    Successful completion.

       >0    An error occurred.

CCOONNSSEEQQUUEENNCCEESS OOFF EERRRROORRSS
       By default, created files shall be removed if an error occurs. When the
       --kk option is specified, created files shall not be removed if an error
       occurs.

       _T_h_e _f_o_l_l_o_w_i_n_g _s_e_c_t_i_o_n_s _a_r_e _i_n_f_o_r_m_a_t_i_v_e_.

AAPPPPLLIICCAATTIIOONN UUSSAAGGEE
       None.

EEXXAAMMPPLLEESS
        1. This example creates four files, ccoobbooll0000 ...  ccoobbooll0033:


               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.

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

        3. Assuming that pprroogg..cc follows 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) in pprroogg..cc:


               csplit -k prog.c '%main(%'  '/^}/+1' {20}

RRAATTIIOONNAALLEE
       The --nn option was added to extend the range of filenames that could be
       handled.

       Consideration was given to adding a --aa flag to use the alphabetic
       filename generation used by the historical _s_p_l_i_t utility, but the
       functionality added by the --nn option was deemed to make alphabetic
       naming unnecessary.

FFUUTTUURREE DDIIRREECCTTIIOONNSS
       None.

SSEEEE AALLSSOO
       _s_e_d, _s_p_l_i_t

       The Base Definitions volume of POSIX.1-2017, _C_h_a_p_t_e_r _8, _E_n_v_i_r_o_n_m_e_n_t
       _V_a_r_i_a_b_l_e_s, _S_e_c_t_i_o_n _9_._3, _B_a_s_i_c _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s, _S_e_c_t_i_o_n _1_2_._2,
       _U_t_i_l_i_t_y _S_y_n_t_a_x _G_u_i_d_e_l_i_n_e_s

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



IEEE/The Open Group                  2017                            CSPLIT(1)
