有时候我们必须把数据文件分割为更小的文件,这样方便我们邮件发送或者查看文件内容。split命令则可以用来分割文件。

一、根据大小来分割文件


1.一般分割

例如:现在有文件tmp.log,大小为:3680k,我们以1000k为单位分割该文件,在split命令中,除了k(KB),我们还可以使用M(MB)、G(GB)、c(byte)、w(word)

Linux:/qinys/data # split -b 1000k tmp.log

2.分割时指定后缀

在分割时,默认使用字母后缀,我们可以给文件名指定数字后缀,使用-d选项,此外,-a length可以指定后缀长度:

Linux:/qinys/data # split -b 1000k tmp.log -d -a 2

3.分割时候指定前缀

我们分割文件的时候为了区分那些是原始文件,哪些是分割后的文件,我们使用前缀来区分,以下在分割后的文件名之前添加fg_

Linux:/qinys/data # split -b 1000k tmp.log -d -a 2 fg_

二、根据行数来分割


现在存在数据文件tmp.log,数据总记录数为:31346

以下是根据文件记录数来拆分文件,以10000条记录为单位进行拆分

Linux:/qinys/data # split -l 10000 tmp.log -d -a 2 row_

三、根据内容拆分


现在存在文件tmp1.log,文件内容如下所示:

我们现在想把每个ping的结果分别存储到各个文件,以便查看;

命令如下:

Linux:/qinys/data # csplit tmp1.log /ping/ -n 2 -s {*} -f ping -b "%02d.log"

执行结果如下:

命令解释:

  • /ping/ 用来匹配特定的行,分割从此处开始;它从当前行(第一行)一直复制到(但不包括)包含ping的行
  • {*} 表示匹配重复执行分割操作,直到文件末尾为止。可以使用{整数}的形式来指定分割的次数
  • -s 是命令进入静默模式,不打印其他信息
  • -n 指定分割后的文件名的数字个数,例如:01,02,03等
  • -f 指定分割后的文件名前缀
  • -b 指定后缀格式,%02d.log表示长度为2位,不足的使用0代替。例如:01,02,03等;可以参照c语言printf参数格式

四、分割带有扩展名的文件


上述我们已经将大文件分隔为多个文件存在,但是分割后的文件都没有扩展名,以下是按照在分隔文件后添加扩展名

现在存在数据文件CUST_INFO.dat(大小为:112M)

我们使用如下命令进行分割

split -b 30m CUST_INFO.dat -d -a 2 file_&&ls|grep file_|xargs -n1 -i{} mv {} {}.txt

命令解释:

split -b 30m CUST_INFO.dat -d -a 2 file_&&ls 将文件以30M大小进行分割,并且前缀为file_;

xargs -n1 -i{} mv {} {}.txt 将生成的文件重命名为扩展名为txt的

分割后结果如下:

【shell】数据文件分割的更多相关文章

  1. 服务器端json数据文件分割合并解决方案

    问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Jso ...

  2. Linux日志文件分割

    经常有这样的情况,日志文件或者数据文件会变得很庞大,那么每次对这些目标文件的访问或者修改就会变得极其耗时.因而引发一些性能问题,但是如果对这些目标文件进行分割,限定其大小,那么每次的访问或者修改就会变 ...

  3. Linux中split大文件分割和cat合并文件

    当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1.分割 ...

  4. [APUE]系统数据文件与信息

    一.口令文件 UNIX口令文件包含下表中的各个字段,这些字段包含在 由于历史原因,口令文件是/bin/passwd,而且是一个文本文件,每一行都包括了上表中的七个字段,字段之间用":&quo ...

  5. CSV文件分割与列异常处理的python脚本

    csv文件通常存在如下问题: 1. 文件过大(需要进行文件分割)2. 列异常(列不一致,如元数据列为10列,但csv文件有些行是11列,或者4列)本脚本用于解决此问题. #coding=utf-8 ' ...

  6. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  7. Oracle sqlldr导入导出txt数据文件详解

    一.sqlldr导入txt 1.预备 a).txt文件 这里要保存成无签名的UTF-8 b).oracle建表 2.编写控制文件input_test.ctl LOAD DATA CHARACTERSE ...

  8. JAVA IO分析三:IO总结&文件分割与合并实例

    时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...

  9. Shell命令-文件及内容处理之split、paste

    文件及内容处理 - split.paste 1. split:分割文件为不同的小片段 split命令的功能说明 split 命令用于将一个文件分割成数个.该指令将大文件分割成较小的文件,在默认情况下将 ...

随机推荐

  1. Chapter 4 -- Throwables

    TODO: rewrite with more examples Guava's Throwables utility can frequently simplify dealing with exc ...

  2. (八十七)AutoLayout的简单介绍与实例

    AutoLayout是继AutoResizing之后的一种自己主动布局方法.攻克了AutoResizing无法处理控件间相互关系的问题. AutoLayout在storyboard中通过底部工具条设置 ...

  3. 常用sql备份

    统计数据库中表格数据行数所占空间和索引情况 set nocount on exec sp_MSForEachTable @precommand=N' create table ##( id int i ...

  4. 人脸识别中的Procruster analysis应用

    本文中,我们通过Procrustes analysis来处理特征点,Procrustes analysis算法可以参考:http://en.wikipedia.org/wiki/Procrustes_ ...

  5. 解决Keyboard遮盖输入的几种办法

    一般来说,键盘遮挡主要有这么几种情况,一个是遮住UITextView,还有就是遮住UITextField,一般来说,比较推荐在UIScrollView或者UITableView里加入textfield ...

  6. Binary Tree Maximum Path Sum leetcode java

    题目: Given a binary tree, find the maximum path sum. The path may start and end at any node in the tr ...

  7. Neo4j 2.0 生产环境集群搭建

    一.在windows上搭建Neo4j ha cluster的配置方法: 例如:建立集群的三台机器的ip分别为:10.230.9.91,10.230.9.92,10.230.9.93. 10.230.9 ...

  8. C++模拟键盘消息

    实现功能:在现有DLL程序中向特定的EXE窗口中发送模拟键盘的消息 使用API根据窗口标题递归查找特定的窗口句柄,之后模拟调用. 注意:keybd_event函数不能在VS下使用,所以用SendInp ...

  9. [转]Python机器学习工具箱

    原文在这里  Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播 ...

  10. ionic_ Network connectivity error occurred, are you offline?

    错误如下: HenHouse admin$ ionic cordova build ios --prod > ionic integrations enable cordova ✖ Downlo ...