【shell】数据文件分割
有时候我们必须把数据文件分割为更小的文件,这样方便我们邮件发送或者查看文件内容。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】数据文件分割的更多相关文章
- 服务器端json数据文件分割合并解决方案
问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Jso ...
- Linux日志文件分割
经常有这样的情况,日志文件或者数据文件会变得很庞大,那么每次对这些目标文件的访问或者修改就会变得极其耗时.因而引发一些性能问题,但是如果对这些目标文件进行分割,限定其大小,那么每次的访问或者修改就会变 ...
- Linux中split大文件分割和cat合并文件
当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1.分割 ...
- [APUE]系统数据文件与信息
一.口令文件 UNIX口令文件包含下表中的各个字段,这些字段包含在 由于历史原因,口令文件是/bin/passwd,而且是一个文本文件,每一行都包括了上表中的七个字段,字段之间用":&quo ...
- CSV文件分割与列异常处理的python脚本
csv文件通常存在如下问题: 1. 文件过大(需要进行文件分割)2. 列异常(列不一致,如元数据列为10列,但csv文件有些行是11列,或者4列)本脚本用于解决此问题. #coding=utf-8 ' ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- Oracle sqlldr导入导出txt数据文件详解
一.sqlldr导入txt 1.预备 a).txt文件 这里要保存成无签名的UTF-8 b).oracle建表 2.编写控制文件input_test.ctl LOAD DATA CHARACTERSE ...
- JAVA IO分析三:IO总结&文件分割与合并实例
时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...
- Shell命令-文件及内容处理之split、paste
文件及内容处理 - split.paste 1. split:分割文件为不同的小片段 split命令的功能说明 split 命令用于将一个文件分割成数个.该指令将大文件分割成较小的文件,在默认情况下将 ...
随机推荐
- git error: RPC failed; curl 56 GnuTLS recv error 解决方案
// git 报错情况: error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properl ...
- 多目标进化算法(MOEA)概述
Weighted Sum Approach 该方法给出的表达式为: 首先,λ被称之为权重向量,观察和式,这完全就是m维向量的点乘公式嘛.具体的说,在目标空间中,把算法求出的一个目标点和原点相连构造成一 ...
- [转]MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
转自:http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单 ...
- lazarus汉化
启动Lazarus IDE,点击菜单栏中的Environment,再点击Options选项 在弹出的IDE选项框内,点选左侧Environment下的Desktop子选项,将Language设为Chi ...
- Parallels Desktop与VirturalBox对比
笔者用了这两款产品,Parallels 和VirtualBox. 下面各讲下各自的优势吧. 先说说Parallels:Parallels和Mac的系统整合非常紧密,并且对于Mac系统,在性能上有很大的 ...
- ZMQ和MessagePack的简单使用(转)
近段日子在做一个比较复杂的项目,其中用到了开源软件ZMQ和MessagePack.ZMQ对底层网络通信进行了封装,是一个消息处理队列库, 使用起来非常方便.MessagePack是一个基于二进制的对象 ...
- C++ stringstream格式化输出输入探索
- 最近在笔试时经常遇见各种输入问题,于是细心总结一波: - 首先string str; cin>>str;遇到空格结束: - 于是乎产生了getline(),可与得到一行字符串:空格自动 ...
- Git-忽略规则.gitignore生效
Git中如果忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法,如下这个文件每一行保存了一个匹配的规则例如,忽略单个文件或者整个目录的文件: *.css ...
- 最小二乘法多项式曲线拟合原理与实现 zz
概念 最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这条曲线精确地经过这些点,而是曲线y=f(x)的近似曲线y= φ(x). 原理 [原理部分由个人根据互联网上的资料进行总结,希望对大家能有用] ...
- map练习
/* 编写程序统计并输出所读入的单词出现的次数 */ /* //代码一:---用map索引实现惊人的简练 #include <iostream> #include <map> ...