码迷,mamicode.com
首页 > 系统相关 > 详细

【shell】数据文件分割

时间:2019-01-08 17:49:44      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:inf   发送   存储   拆分   info   src   开始   匹配   命令解释   

有时候我们必须把数据文件分割为更小的文件,这样方便我们邮件发送或者查看文件内容。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参数格式

【shell】数据文件分割

标签:inf   发送   存储   拆分   info   src   开始   匹配   命令解释   

原文地址:https://www.cnblogs.com/OliverQin/p/10240222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!