csplit 分割文件

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

语法

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

选项

-b<输出格式>或--suffix-format=<输出格式>:预设的输出格式其文件名称为xx00,xx01等,用户可以通过改变<输出格式>来改变输出的文件名;
-f<输出字首字符串>或--prefix=<输出字首字符串>:预设的输出字首字符串其文件名为xx00,xx01等,如果制定输出字首字符串为“hello”,则输出的文件名称会变成hello00,hello、01......
-k或--keep-files:保留文件,就算发生错误或中断执行,也不删除已经输出保存的文件;
-n<输出文件名位数>或--digits=<输出文件名位数>:预设的输出文件名位数其文件名称为xx00,xx01......如果用户指定输出文件名位数为“3”,则输出的文件名称会变成xx000,xx001等;
-q或-s或--quiet或——silent:不显示指令执行过程;
-z或--elide-empty-files:删除长度为0 Byte文件。

参数

文件:指定要分割的原文件;
模式:指定要分割文件时的匹配模式。

实例 

示例测试文件 server.log
cat server.log
SERVER-1
[con] 10.10.10.1 suc
[con] 10.10.10.2 fai
[dis] 10.10.10.3 pen
[con] 10.10.10.4 suc
SERVER-2
[con] 10.10.10.5 suc
[con] 10.10.10.6 fai
[dis] 10.10.10.7 pen
[con] 10.10.10.8 suc
SERVER-3
[con] 10.10.10.9 suc
[con] 10.10.10.10 fai
[dis] 10.10.10.11 pen
[con] 10.10.10.12 suc 

需要将server.log分割成server1.log、server2.log、server3.log,这些文件的内容分别取自原文件中不同的SERVER部分: 

[root@localhost split]# csplit server.log /SERVER/ -n2 -s {*} -f server -b "%02d.log"; rm server00.log
[root@localhost split]# ls
server01.log server02.log server03.log server.log 

命令详细说明: 

/[正则表达式]/    #匹配文本样式,比如/SERVER/,从第一行到包含SERVER的匹配行。
{*}   #{*}表示一直重复到文件内容不可再分割为止,使用{整数(也就是执行的次数)}的形式指定分割执行的次数。
-s    #静默模式,不打印其他信息。
-n    #指定分割后的文件名后缀的数字个数。比如01、02、03等。
-f    #指定分割后的文件名前缀。
-b    #指定后缀格式。比如%02d.log,类似于C语言中的printf参数格式。
rm    server00.log #是删除第一个文件,因为分割后的的第一个文件没有内容,匹配的单词就位于文件的第一行中。

示例:  

1)将文本文件textfile以120行为分界点切割成2份
  $csplit testfile 120
2)将文本文件textfile以120行为分界点切割成2份,并指定输出文件名的位数为3
  $csplit -n 3 testfile 120
  $ls
  textfile  xx000  xx001
3)将文本文件textfile以120行为分界点切割成2份,并指定输出文件名的前缘为FileName位数为3
  $csplit -f FileName testfile 120
  $ls  textfile  FileName00  FileName001
4)将文件textfile以10行为单位分割8次,并指定输出文件名的格式
  $csplit -b "myfile%o% textfile 10 {8}
  $ls
  textfile xxmyfile00  xxmyfile01 xxmyfile02 ...
5)将文本文件textfile以每20行为单位分割
  $csplit textfile 20 {*}
6)把文件以字符串"Chapter X"为分界符,分成两部分
  $csplit textfile /"Chapter X"/
7)承上例, 但分割文件时以"Chapter X"字符串往下4行才是分割点
  $csplit textfile /"Chapter X"/+4

1. # csplit -k -f prefix FILE 15000 {99}
   把文件 FILE 分解,分解后大小为 15000 行,文件名前缀为 prefix 后缀为 00、01、02 ......99,而文件个数不多于100个。
2. # split -d -b 512 FILE prefix
   把文件 FILE 分解,分解后大小为 512byte,文件名前缀为 prefix 后缀为 00、01、02 ......99。若 -b 改为 -k 为Kbyte,-m 为Mbyte

				
时间: 2024-09-20 06:08:41

csplit 分割文件的相关文章

javaweb 大文件上传-上传单个大文件和一次上传多个分割文件效果一样吗?

问题描述 上传单个大文件和一次上传多个分割文件效果一样吗? 用struts2上传大文件.直接上传一个大文件,和在一个表单里面上传它的分割个文件效果一样吗?就是多文件上传是一个一个文件的进入内存上传释放内存,还是一次性全部进内存.. 对js不熟,没学过jQuery网上很多上传大文件的都看不懂.今天试着上传2个文件,一个20多M,一个30多M的.内存就到90%了... 解决方案 看你是怎么一个分隔,如果是ajax方式的,一个一个来,那么就是你说的一个一个读取内存再释放.如果是放在一个http会话中,

python 分割文件的几个例子

例子1 指定分割文件大小 配置文件 config.ini [global] #原文件存放目录 dir1=F:\work\python\3595\pyserver\test #新文件存放目录 dir2=F:\work\python\3595\pyserver\test1 python 代码  代码如下 复制代码 #!/usr/bin/python # -*- coding: utf-8 -*- import os,sys,ConfigParser class file_openate(object

python分割文件的常用方法_python

本文大家整理了一些比较好用的关于python分割文件的方法,方法非常的简单实用.分享给大家供大家参考.具体如下: 例子1 指定分割文件大小 配置文件 config.ini: 复制代码 代码如下: [global] #原文件存放目录 dir1=F:\work\python\3595\pyserver\test #新文件存放目录 dir2=F:\work\python\3595\pyserver\test1 python 代码如下: 复制代码 代码如下: #!/usr/bin/python # -*

linux下如何tar打包分割文件和解压文件

首先是压缩: tar -czvp -f skype_backup.tar.gz skype_backup 分割: split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose 如上两句命令合并为一句: tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose 合并文件: cat skype_backu

VC中分割文件路径的分割类

/********************************************************************** * Copyright (C) 2007 - All Rights Reserved * * File:            SplitPath.h * Description:       进行文件路径字符串分割 *      * Authors:         yanglinbo,  * Revisions:       See bottom o

ArcGIS按字段属性分割文件

   在ArcGIS中我们有时需要将一个文件安字段的属性分割成多个文件,网友总结了几乎所有的方法:http://blog.sina.com.cn/s/blog_4e87fb4c0100fcjh.html ,我也来测试一下效果.    方法一:ToolBox工具    利用筛选工具,设置筛选条件,即可导出为多个文件,可以使用批处理来操作.但毕竟还是比较繁琐,特别是数据量比较多的时候.    方法二:FME扇出功能    如图,以Name2为Fanout(扇出)字段,可以方便将数据按属性分成多个文件

在Linux中分割和重组文件

非常有用的 csplit 命令可以将单个文件分割成多个文件.Carla Schroder 解释说. Linux 有几个用于分割文件的工具程序.那么你为什么要分割文件呢?一个用例是将大文件分割成更小的尺寸,以便它适用于比较小的存储介质,比如 U 盘.当您遇到 FAT32(最大文件大小为 4GB),且您的文件大于此时,通过 U 盘传输文件也是一个很好的技巧.另一个用例是加速网络文件传输,因为小文件的并行传输通常更快. 我们将学习如何使用 csplit,split 和 cat 来重新整理文件,然后再将

合并二进制文件:PHP大文件存储示例,各种文件分割和合并(二进制分割与合并)

简单示例: split.php<?php$i = 0; //分割的块编号$fp = fopen("abc.wmv","rb"); //要分割的文件$file = fopen("split_hash.txt","a"); //记录分割的信息的文本文件while(!feof($fp)){$handle = fopen("abc.wmv.{$i}","wb");fwrite($handl

用C#设计一个命令行方式的文件分割器

命令行|设计 共享软件中有很多界面美观的文件分割程序,将一个大文件分割成几个较小的文件,分别保存,需要的时候再合并成原来的文件,常常是必备的工具. 本文用微软的visual studio .net开发环境的C#语言也来设计一个文件分割器,并且以DOS命令行方式运行,就象使用copy命令一样简单.从中也可以了解文件分割的原理以及.net框架对文件的读写操作方式. 新建一个visual c#项目,选择"控制台应用程序",项目名称设置为filesplitcon,系统自动产生了class1.c