• 1、指定拆分文件大小
  • 2、以数字为后缀
  • 3、-a 指定后缀长度
  • 4、修改前缀
  • 5、-l按照数据行来拆分
  • 6、csplit



分割文件为提高可读性、生成日志、通过E-mail发送文件等

1、指定拆分文件大小

split 目录下 有文件 split_data.file 大小为423字节

Linux脚本攻略学习笔记之split实例演示_文件名

把文件拆分为 100字节大小的

split -b 100 split_data.file

Linux脚本攻略学习笔记之split实例演示_Linux脚本攻略学习笔记_02

可以看到文件被拆为5个文件其中四个为100字节,一个为23字节。看到拆分后的文件后缀名为字母,前缀是x。

还可以使用 M (MB)、 G (GB)、 c (byte)、 w (word)

2、以数字为后缀

split  -C 100 split_data.file -d # -C 以字节拆分   -d以数字为后缀

Linux脚本攻略学习笔记之split实例演示_2d_03

3、-a 指定后缀长度

split -b split_data.file 100 -d -a 3

Linux脚本攻略学习笔记之split实例演示_2d_04

4、修改前缀

直接把前缀放到命令中,以split_file为前缀

split -b 100 split_data.file -d -a 3 split_file

Linux脚本攻略学习笔记之split实例演示_Linux脚本攻略学习笔记_05

5、-l按照数据行来拆分

文件按4行来拆分

split -l  4 split_data.file

Linux脚本攻略学习笔记之split实例演示_文件名_06

来看文件内容

Linux脚本攻略学习笔记之split实例演示_2d_07

6、csplit

csplit 是 split 工具的一个变体。 split 只能够根据数据大小或行数分割文件,而 csplit
可以根据文本自身的特点进行分割。是否存在某个单词或文本内容都可作为分割文件的条件
server.log 日志内容如下:

SERVER-1
[connection] 192.168.0.1 success
[connection] 192.168.0.2 failed
[disconnect] 192.168.0.3 pending
[connection] 192.168.0.4 success
SERVER-2
[connection] 192.168.0.1 failed
[connection] 192.168.0.2 failed
[disconnect] 192.168.0.3 success
[connection] 192.168.0.4 failed
SERVER-3
[connection] 192.168.0.1 pending
[connection] 192.168.0.2 pending
[disconnect] 192.168.0.3 pending
[connection] 192.168.0.4 failed

按照服务器去拆分日志

csplit  server.log /SERVER/ -n 2 -s {*} -f server -b  "%02d.log";rm server00.log

Linux脚本攻略学习笔记之split实例演示_文件名_08


命令详解:

有关这个命令的详细说明如下。

 /SERVER/ 用来匹配某一行,分割过程即从此处开始。

 /[REGEX]/ 表示文本样式。包括从当前行(第一行)直到(但不包括)包含“ SERVER ”

的匹配行。

 {*} 表示根据匹配重复执行分割,直到文件末尾为止。可以用{整数}的形式来指定分割执

行的次数。

 -s 使命令进入静默模式,不打印其他信息。

 -n 指定分割后的文件名后缀的数字个数,例如01、02、03等。

 -f 指定分割后的文件名前缀(在上面的例子中,server就是前缀)。

 -b 指定后缀格式。例如 %02d.log ,类似于C语言中 printf 的参数格式。在这里文件名=

前缀+后缀= server + %02d.log

因为分割后的第一个文件没有任何内容(匹配的单词就位于文件的第一行中),所以我们删
除了server00.log