csplit 是linux命令,csplit 命令拷貝指定的文本文件并將拷貝分成段

語(yǔ)法

csplit [ -f Prefix ] [ -k ] [ -n Number ] [ -s ] File Argument ...

描述

csplit 命令拷貝指定的文件并將拷貝分成段。原始的還未改變的輸入文件,必須是一個(gè)文本文件。

這個(gè) csplit 命令將這些段寫(xiě)到文件 xx00 . . . xx99 中,這依賴于 Argument 參數(shù)被指定(99 是最大值)多少次。缺省情況下,Argument 參數(shù)期望一個(gè)行號(hào)。當(dāng)指定多行號(hào)時(shí)應(yīng)用以下規(guī)則:

* 文件 xx00 包含原始文件的行開(kāi)始,到(但不包括)第一個(gè) Argument 參數(shù)指定的行。

* 文件 xx01 包含第一個(gè) Argument參數(shù)指定的編號(hào)的行開(kāi)始,直到(但不包括)第二個(gè) Argument參數(shù)引用的行。每個(gè)指定行號(hào)作為自變量,標(biāo)記新行的開(kāi)始。

* 文件 xxnn(最后創(chuàng)建的文件)包含最后一個(gè) Argument 參數(shù)指定的編號(hào)的行開(kāi)始,直到文件結(jié)束。

示例

如果原始的文件有 108 行,輸入:

csplit orginal.txt 11 72 98

這個(gè) csplit 命令創(chuàng)建 4 個(gè)文件: xx00 文件包含行 1-10,xx01 文件包含行 11-71,xx02 文件包含行 72-97,xx03 文件包含行 98-108。

Argument 參數(shù)還可以包含以下符號(hào)和模式字符串:

/Pattern/ 創(chuàng)建一個(gè)文件包含從當(dāng)前行開(kāi)始直到(但不包含)包含指定模式的那一行的段的文件。包含模式的行成為當(dāng)前行。

% Pattern % 使包含指定模式的行成為當(dāng)前行,但不為段創(chuàng)建一個(gè)文件。

+ Number 將指定編號(hào)的行從以前的匹配模式前移。示例,/頁(yè) /+5 搜索頁(yè),那就提前 5 行。

-Number 將指定的行號(hào)從以前的匹配模式行后移。示例,/頁(yè) /-5 搜索頁(yè)那就后退 5 行。

{Number} 重復(fù)指定次數(shù)的以前選項(xiàng)。這個(gè)號(hào)碼可以緊跟任何模式或行號(hào)。如果緊跟一個(gè)模式,csplit 命令就會(huì)重新使用指定次數(shù)的模式。如果緊跟一個(gè)行號(hào),csplit 命令將文件從由行號(hào)指定行的點(diǎn)處分割開(kāi)。

將引用標(biāo)記放在所有模式周圍,這些模式包含空格或其它專用于 shell 的字符。模式不要包含 embedded 新行字符。在表達(dá)中,例如 [a-z],- (減號(hào))意思是通過(guò),這是根據(jù)當(dāng)前的整理順序。一個(gè)整理順序可以定義同等的類以便在字符范圍以內(nèi)使用。

標(biāo)志

-fPrefix 指定前綴由已經(jīng)創(chuàng)建的文件段使用。此變量的缺省值是 xx。

-k 使創(chuàng)建的文件段完整的位于出錯(cuò)事件中。

-nNumber 改變十進(jìn)制號(hào)碼位,用于創(chuàng)建文件名。缺省的是兩個(gè)十進(jìn)制位或 xx00 . . . xx99。如果指定 -n 4 標(biāo)志,例如,新的文件被命名為 xx0000 . . . xx0099。

-s 消除字符計(jì)數(shù)的顯示。

退出狀態(tài)

此命令返回以下退出值:

0 成功完成。

>0 發(fā)生錯(cuò)誤。

示例

1. 將 book 的文本以每章一個(gè)單獨(dú)文件來(lái)分割,輸入:

csplit book "/^ Chapter *[k.0-9]k./" {9}

這創(chuàng)建了 10 個(gè)文件,從 xx00 到 xx09。xx00 文件包含了第一章前面的出版前頁(yè)。文件從 xx01 到 xx09 包含各個(gè)單獨(dú)的章節(jié)。每一章起始的一行只包含單詞章和章節(jié)號(hào)。

2. 為這些創(chuàng)建自 book 的文件指定前綴 chap,輸入:

csplit -f chap book "/^ Chapter *[k.0-9]k./" {9}

這樣把 book 分割成文件,命名從 chap00 到 chap09。

文件

/usr/bin/csplit 包含 csplit 命令。