需求:由于文件过大,不方便进行相关的操作,需要将其拆分成大小小于500000B,即488.28125k的文件。同时,为了保证文件的可读性,行内不可以分割,同时,由于内容是块状可读,按照日期进行分割的,因此不能破坏块状因素。例如,db2diag.log日志文件,其格式如下:

2004-10-11-19.01.56.555034-300 I7109918C313 LEVEL: Event
PID : 119664 TID : 1 PROC : db2star2
INSTANCE: dimi NODE : 000
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:30
CHANGE : CFG DBM: "Instance_Memory" <automatic> From: "11126" To: "11126"

所以在拆分过程中,不能破坏其可读性。

一. 研究使用split命令,split [-blC] file PREFIX

参数: -b 后面可接欲分割成的文件大小,可加单位b,k,m等。但是只是按照大小进行拆分,行内或者某个单词也会被拆开。split -b 488k filename prefix

-l  后面根据行数来进行分割,这样可以保证行内不被切割,但是不能保证块内不被切割。而且由于行中的字符数不确定,因此导致行书切割也不确定。 split -l 10 filename prefix

-C 与-b类似,也是指定字节数,但是切割时尽量维持每行的完整性。split -C 488k filename prefix

PREFIX  代表前导符,可作为切割文件的前导文字

二.awk命令

awk -v prefix=$ 'BEGIN {bitNum=0; i=0} {if (length($0) != 0){bitNum+=length($0); print $0 > prefix i;}else{if(bitNum > 480000){i++; bitNum=length($0); print $0 > prefix i} else{bitNum+=length($0); print $0 > prefix i;}}}' $filename

其中prefix是用户传入的变量名,为了能在后面的处理中使用,使用-v声明

BEGIN用来初始化变量;记录以空行即length($0)为分割;bitNum用来记录已经出现了多少个字符,i用来记录是存储到第几个文件中(小文件名)

参考: http://bbs.chinaunix.net/thread-4124134-1-1.html

awk内置字符串:http://bbs.chinaunix.net/thread-1697027-1-1.html

最新文章

  1. 分享在winform下实现模块化插件编程
  2. SQL SELECT SET
  3. PowerDesigner 16.5
  4. 用C#打开文件对话框的方法和简单使用的程序
  5. 编写高效的CSS选择符(节选)
  6. SVM整理
  7. dynamic 动态获取object数据
  8. C#实现MD5字符串加密
  9. [转]关于SQL分页存储过程的分析
  10. Ucan23操作系统项目地址
  11. mybatis if test 解决页面 升序和降序的问题
  12. Wooden Sticks -HZNU寒假集训
  13. python Event对象、队列和多进程基础
  14. prefixspan python
  15. WANem广域网环境模拟
  16. ccf--20150303--节日
  17. 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)
  18. 个人经验~mysql故障处理思路
  19. 中间人攻击工具ettercap
  20. 详述socket编程之select()和poll()函数

热门文章

  1. 【leetcode】Spiral Matrix II
  2. struts2类型转换器、 类型转换错误 以及INPUT view
  3. Unity3d 怪物死亡燃烧掉效果
  4. 【leetcode】House Robber &amp; House Robber II(middle)
  5. UVA 10815 Andy&#39;s First Dictionary ---set
  6. mysql 得到重复的记录
  7. hdu 1279 验证角谷猜想
  8. OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
  9. 让ASP.NET MVC不使用jsonp也可以跨域访问
  10. 【JAVA解析XML文件实现CRUD操作】