from:http://blog.sina.com.cn/s/blog_4dd4753901017jwj.html

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。

  在Linux下用split进行文件分割:

  模式一:指定分割后文件行数

  对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

  命令:split -l 300 large_file.txt new_file_prefix

  模式二:指定分割后文件大小

split -b 10m server.log waynelog

对二进制文件我们同样也可以按文件大小来分隔。

在Linux下用cat进行文件合并:

  命令:cat small_files* > large_file

tag: linux 日志 分割

明:

本文采用一个50M大小的日志文件进行测试。
日志文件名:log.txt.gz。
文件行数:208363


方法1:(split分割)
语法:split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
# gunzip log.txt.gz             //一定要先解压,否则分割的文件是不能cat/zcat显示;

# wc -l log.txt                 //计算一个文件的总行数;

208363 log.txt
# split -l 120000 log.txt newlog    //通过指定行数,将日志分割成两个文件;
# du -sh *50M     log.txt
29M     newlogaa
22M     newlogab
# file *                         //分割后的文件与原文件属性一样
log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators
# gzip newlogaa newlogab         //将分割后的文件进行压缩,以便传输


另一种方法,通过

方法2:(dd分割)
# gunzip log.txt.gz             //一定要先解压,否则分割的文件是不能cat/zcat显示;

#dd bs=20480 count=1500 if=log.txt of=newlogaa      //按大小分第一个文件

#dd bs=20480 count=1500 if=log.txt of=newlogab skip=1500  //将大小之后的生成另一个文件#file *

log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators

分割没问题,但会出现同一行分到不同文件的情况,除非你以及日志分析系统可以“容忍”。
方法3:(head+tail 分割)
#gzip log.txt.gz               //如不解压缩,下面请用zcat。
#wc -l log.txt                //统计一个行数
208363 log.txt
# head -n `echo $((208363/2+1))` log.txt > newloga.txt      //前x行重定向输出到一个文件中;

#tail –n `echo $((208363-208362/2-1))` log.txt >newlogb.txt //后x行重定向输出到一个文件中;

#gzip newloga.txt newlogb.txt          //将两个文件进行压缩


方法4:(awk分割)
#gzip log.txt.gz#awk ‘{if (NR<120000) print $0}’ log.txt >newloga.txt#awk ‘{if (NR>=120000) print $0}’ log.txt >newlogb.txt
以上两个命令,都要遍历整个文件,所以考虑到效率,应使用合并成:

#awk ‘{if (NR<120000) print $0 >”newloga.txt”;if (NR>=120000) print $0>”newlogb.txt”}’ log.txt

总结:
以上四种方法,除了dd之外的三种方式都可以很好的整行分割日志文件。进行分割时,应考虑在读一次文件的同时完成,如不然,按下面的方式分割:
Cat log.txt| head –12000 >newloga.txt
Cat log.txt | tail –23000 >newlogb.txt
如用此方法分割文件的后一部分,那么执行第二行命令文件时,前x行是白白读一遍的,执行的效率将很差,如文件过大,还可能出现内存不够的情况。

linux下分割文件相关推荐

  1. linux下分割文件的方法,关于linux系统下分割大文件的方法

    <关于linux系统下分割大文件的方法>由会员分享,可在线阅读,更多相关<关于linux系统下分割大文件的方法(4页珍藏版)>请在人人文库网上搜索. 1.关于 linux系统下 ...

  2. linux下分割文件的方法,linux系统下分割大文件的方法有哪些

    学习啦小编我在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取.有时,需要传输20gb的大文件到另一台服务器,也需要把它分割成多个文件,这样便于 ...

  3. qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头

    点击上方"开发者的花花世界",选择"设为星标"技术干货不定时送达! 这是一个知识点 方便快捷的给结构化数据文件分割大小并保留文件的表头,几十个G的结构化文件不仅 ...

  4. linux 4g大小文件夹,Linux: 如何分割文件,不再被 4G 大小限制了

    单文件 4G 限制 FAT32 4G 限制 百度网盘超出 4G 限制 单文件分割与合并 单文件,如:archive.tar.gz 分割 split -b 3000M -d -a 1 archive.t ...

  5. Linux下分割与合并文件的方法

    Linux下分割与合并文件的方法 切割合并文件在linux下用split和cat就可以完成.下面举些实例进行说明. 1.文件切割 文件切割模式分为两种: 文本文件 二进制模式. 1.1文本模式 文本模 ...

  6. linux打补丁前如何备份,关于Linux下给文件打补丁

    在linux下给文件打补丁,需要用到命令diff和patch,下面就分别介绍这两个命令,并演示一个例子. 一.diff命令 diff命令用于比较两个文件或目录的差异,可以结合重定向命令把差异记录下来, ...

  7. Linux下查看文件和文件夹大小

    1 Linux下查看文件和文件夹大小 2 删除系统日志等 场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分 ...

  8. Linux下分割PDF工具--PDFtk

    发现一个Linux下分割.合并PDF的工具,记录一下. 官网是:https://www.pdflabs.com/tools/pdftk-server/#download 官方介绍如下: 安装方式很简单 ...

  9. Linux下对文件的操作及添加新用户

    Linux下对文件的操作及添加新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的其他命令 二.创建新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的 ...

最新文章

  1. 西门子PLC学习笔记二-(工作记录)
  2. 别和 Python 说再见了!!
  3. 致力云安全服务模式 安全狗获近5000万融资
  4. python用户登录程序_「Python」每日一练:函数的应用之注册登录程序
  5. Gauss-Newton算法学习
  6. 程序员公司选择:创业公司、中等规模公司、大公司
  7. python如何移动图片_python之详细图像仿射变换讲解(图像平移、旋转、缩放、翻转),一文就够了,赶紧码住...
  8. SQl---基础整理6--数据库的创建
  9. python sys.argv
  10. sql server sysobjects 中type 和xtype
  11. php冗余,php – 如何使用规范化删除冗余?
  12. 使用Idea进行Junit单元测试
  13. 非线性光纤光学_深紫外非线性光学羟基硼酸盐的理论预言和实验验证
  14. V10抢单系统源码(新增连单管理功能)
  15. 嵌入式开发需要学习什么?
  16. 自定义控件——圆形圆点进度条(仿安全卫士中的一键加速)
  17. NS2网络仿真的过程
  18. Wi-Fi®安全状况
  19. mysql数据库备份方式
  20. mldonkey设置!看图(转载)

热门文章

  1. 寒武纪mlu220开发板-英码科技
  2. CloudStack的创建
  3. 学习笔记(03):四十九课时精通matlab数学建模-精通matlab单元数组和结构体深入学习...
  4. 视频压缩工具有哪些?什么视频压缩工具好用?
  5. 异构同步——mysql-oracle ogg同步
  6. 【愚公系列】2023年04月 漏洞扫描与利用之Nessus
  7. 直播自拍杆的选择/稳定的智能直播自拍杆
  8. 【Python】照片居然能变素描?不会画画但是咱会代码
  9. 蓝桥杯 算法提高 分苹果 【差分数组 + 离线区间加 + 板子题】
  10. 使用Python将《青花瓷》歌词生成词云图