有时候我们必须把数据文件分割为更小的文件,这样方便我们邮件发送或者查看文件内容。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. 《SEO教程:搜索引擎优化入门与进阶(第3版)》

    <SEO教程:搜索引擎优化入门与进阶(第3版)> 基本信息 作者: 吴泽欣 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115357014 上架时间:2014-7-1 出 ...

  2. [web 前端] web本地存储(localStorage、sessionStorage)

    cp from : https://blog.csdn.net/mjzhang1993/article/details/70820868 web 本地存储 (localStorage.sessionS ...

  3. C#从证书存储区读取证书

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  4. window API一天一练之邮槽

    邮槽通信的进程分为服务端和客户端.服务端创建邮槽,客户端通过邮槽名打开邮槽,获得句柄后可以向邮槽写数据. 邮槽通信是单向通信,只能由客户端向服务端发送数据.下面来看看有关邮槽的几个API HANDLE ...

  5. Word Ladder leetcode java

    题目: Given two words (start and end), and a dictionary, find the length of shortest transformation se ...

  6. Linux系统中查找、删除重复文件,释放磁盘空间。

    在Linux系操作系统中查找并删除重复文件的方法的确有很多,不过这里介绍的是一款非常简单实用的软件FSlint.FSlint是一个重复文件查找工具,可以使用它来清除不必要的重复文件,笔者经常使用它来释 ...

  7. 3D打印机切片与控制软件

    3D模型必须经由两个软件的处理来完成打印程序:切片与传送.切片软件会将模型细分成可以打印的薄度,然后计算其打印路径.3d打印机客户端软件再把这系列动作传送到硬件,并提供控制其他功能的控制介面.了解您的 ...

  8. (算法)从0到n整数中数字2出现的次数

    题目: 数出0到n(含)中数字2出现了几次. 思路: 1.暴力方法,数出每个数字包含几个2,然后累加起来. 2.分析:分别考虑数字n每一位出现2的次数,如123123: 从左往右考虑4123123: ...

  9. Mathematica 文本界面获得之前的结果

    使用%号做标记.获得文本界面之前的运算结果:

  10. 多模块Maven项目如何使用javadoc插件生成文档

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   需求 最近要对一个项目结构如下的Maven项目生成JavaDoc文档. Project                  ...