runoops.com

Linux csplit命令

csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件。碎片文件的命名类似“xx00”,“xx01”。csplit命令是split的一个变体,split只能够根据文件大小或行数来分割,但csplit能够根据文件本身特点来分割文件。

语法

csplit [-kqsz][-b<输出格式>][-f<输出字首字符串>] [-n<输出文件名位数>][--help][--version][文件][范本样式...]

参数

  • -b<输出格式>或--suffix-format=<输出格式> 预设的输出格式其文件名称为xx00,xx01…等,您可以通过改变<输出格式>来改变输出的文件名。
  • -f<输出字首字符串>或--prefix=<输出字首字符串> 预设的输出字首字符串其文件名为xx00,xx01…等,如果你指定输出字首字符串为"hello",则输出的文件名称会变成hello00,hello01…等。
  • -k或--keep-files 保留文件,就算发生错误或中断执行,也不能删除已经输出保存的文件。
  • -n<输出文件名位数>或--digits=<输出文件名位数> 预设的输出文件名位数其文件名称为xx00,xx01…等,如果你指定输出文件名位数为"3",则输出的文件名称会变成xx000,xx001,xx002。
  • -q或-s或--quiet或--silent 不显示指令执行过程。
  • -z或--elide-empty-files 删除长度为0 Byte文件。
  • --help 在线帮助。
  • --version 显示版本信息。

实例

test.txt文件中的内容如下:

$ cat test.txt
abc
123456
runoops
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff

将文本文件test.txt以第 2 行为分界点切割成两份,使用如下命令:

$ csplit test.txt 2
4  <==表示第一个文件字符个数
50 <==表示第二个文件字符个数

其中第1 行是第一个文件xx00的字符个数,同样,第2 行为第二个文件xx01的字符个数。同时,在test.txt的同目录下将生成两个文件,文件名分别为xx00、xx01,两个文件中的内容分别为:

$cat xx00
abc
$cat xx01
123456
runoops
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff