'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Portions Copyright (c) 2003, Sun Microsystems, Inc. All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.In the following statement, the phrase "this text" refers to portions of the system documentation.Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.In the event of any discrepancy between these versions 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.This notice shall appear on any product containing this material. .TH csplit 1 "2003 年 12 月 4 日" "SunOS 5.11" "用户命令" .SH 名称 csplit \- 基于上下文拆分文件 .SH 用法概要 .LP .nf \fBcsplit\fR [\fB-ks\fR] [\fB-f\fR \fIprefix\fR] [\fB-n\fR \fInumber\fR] \fIfile\fR \fIarg1\fR... \fIargn\fR .fi .SH 描述 .sp .LP \fBcsplit\fR 实用程序读取由 \fIfile\fR 操作数指定的文件,根据 \fIarg\fR 操作数的指示将该文件全部或部分写入到其他文件中,并写入文件的大小。 .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-f\fR\fI prefix\fR\fR .ad .RS 13n .rt 将所创建的文件命名为 \fIprefix\fR\fB00\fR、\fIprefix\fR\fB01\fR、 ...、\fIprefix\fR\fIn\fR。缺省值为 \fBxx00\fR ... \fBxx\fR\fIn\fR。如果 \fIprefix\fR 参数将创建超过 \fB14\fR 个字节的文件名,则会产生错误。在那种情况下,\fBcsplit\fR 将退出并显示一条诊断消息,并且不会创建文件。 .RE .sp .ne 2 .mk .na \fB\fB-k\fR\fR .ad .RS 13n .rt 将以前创建的文件保留不变。缺省情况下,如果发生错误,则 \fBcsplit\fR 会删除已创建的文件。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fI number\fR\fR .ad .RS 13n .rt 使用 \fInumber\fR 个十进制数字构成文件片段的文件名。缺省值为 \fB2\fR。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .RS 13n .rt 禁止文件大小消息的输出。 .RE .SH 操作数 .sp .LP 支持下列操作数: .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .RS 8n .rt 要拆分的文本文件的路径名。如果 \fIfile\fR 为 \fB-\fR,则将使用标准输入。 .RE .sp .LP 操作数 \fIarg1\fR ... \fIargn\fR 可以是以下项的组合: .sp .ne 2 .mk .na \fB/\fIrexp\fR/[\fIoffset\fR]\fR .ad .RS 18n .rt 使用从当前行开始直至(但不包括)由包含 \fIoffset\fR(如果已应用)的正则表达式计算得到的行的内容创建一个文件。正则表达式 \fIrexp\fR 必须遵守基本正则表达式的规则。正则表达式中可以使用 '\fB\/\fR' 和 '\fB\%\fR'。必须用单引号将这些形式正确地括起来,因为 “\fB\\fR” 对于 shell 具有特殊含义。可选的 \fIoffset\fR 必须是一个表示行数的正整数或负整数值。该整数值前必须带有 \fB+\fR 或 \fB-\fR。如果通过这种类型的偏移表达式选择的行将创建一个包含零行的文件,或者将创建一个大于输入文件中所保留的行数的文件,则结果不可预测。在创建片段后,当前行将被设置为由应用了任何偏移的正则表达式计算得到的行。模式匹配 \fIrexp\fR 始终从当前行一直应用到文件末尾。 .RE .sp .ne 2 .mk .na \fB%\fIrexp\fR%[\fIoffset\fR]\fR .ad .RS 18n .rt 此操作数与 /\fIrexp\fR/[\fIoffset\fR] 相同,只是不会为输入文件的选定片段创建文件。 .RE .sp .ne 2 .mk .na \fB\fIline_no\fR\fR .ad .RS 18n .rt 创建一个包含从当前行直至(但不包括)行号 \fIline_no\fR 的内容的文件。文件中的行将从 1(一)开始编号。当前行成为 \fIline_no\fR。 .RE .sp .ne 2 .mk .na \fB{\fInum\fR}\fR .ad .RS 18n .rt 重复操作数。此操作数可以跟在前面所述的任何操作数之后。如果它跟在 \fIrexp\fR 类型的操作数后,则该操作数将多应用 \fInum\fR 次。如果它跟在 \fIline_no\fR 操作数后,则文件将从该点开始每 \fIline_no\fR 行拆分一次,拆分 \fInum\fR 次。 .RE .sp .LP 如果某个操作数未引用介于当前位置与文件末尾之间的行,则会报告错误。 .SH 用法 .sp .LP 有关 \fBcsplit\fR 遇到大于或等于 2 GB(2^31 字节)文件时行为的说明,请参见 \fBlargefile\fR(5)。 .SH 示例 .LP \fB示例 1 \fR拆分和组合文件 .sp .LP 此示例创建四个文件:\fBcobol00\fR...\fBcobol03\fR。 .sp .in +2 .nf example% \fBcsplit -f cobol filename \e '/procedure division/' /par5./ /par16./\fR .fi .in -2 .sp .sp .LP 在编辑\fB拆分的\fR文件后,可以按如下方式重新组合它们: .sp .in +2 .nf example% \fBcat cobol0[0\(mi3] > \fIfilename\fR\fR .fi .in -2 .sp .sp .LP 此示例覆盖原始文件。 .LP \fB示例 2 \fR将文件拆分为相同大小的部分 .sp .LP 此示例每 100 行拆分一次文件,直至 10,000 行。\fB-k\fR 选项的作用是,即使行数少于 10,000 行,也保留已创建的文件;不过,在这种情况下,仍然会输出一条错误消息。 .sp .in +2 .nf example% \fBcsplit -k filename 100 {99}\fR .fi .in -2 .sp .LP \fB示例 3 \fR为单独的 C 例程创建文件 .sp .LP 如果 \fBprog.c\fR 遵守常规的 C 编码约定(例程的最后一行仅包含一个 \fB}\fR,且该字符位于第一个字符处),则此示例将为 \fBprog.c\fR 中每个单独的 C 例程创建一个文件(直至 21)。 .sp .in +2 .nf example% \fBcsplit -k prog.c '%main(%' '/^}/+1' {20}\fR .fi .in -2 .sp .SH 环境变量 .sp .LP 有关影响 \fBcsplit\fR 执行的以下环境变量的说明,请参见 \fBenviron\fR(5):\fBLANG\fR、\fBLC_ALL\fR、\fBLC_COLLATE\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR 和 \fBNLSPATH\fR。 .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 成功完成。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ CSIEnabled(已启用) _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SH 另请参见 .sp .LP \fBsed\fR(1)、\fBsplit\fR(1)、\fBattributes\fR(5)、\fBenviron\fR(5)、\fBlargefile\fR(5)、\fBstandards\fR(5) .SH 诊断 .sp .LP 大部分诊断消息是不需要加以说明的,除了以下这条: .sp .ne 2 .mk .na \fB\fIarg\fR - out of range\fR .ad .RS 22n .rt 指定的参数没有引用介于当前位置与文件末尾之间的行。 .RE