- 1、指定拆分文件大小
- 2、以数字为后缀
- 3、-a 指定后缀长度
- 4、修改前缀
- 5、-l按照数据行来拆分
- 6、csplit
分割文件为提高可读性、生成日志、通过E-mail发送文件等
1、指定拆分文件大小
split 目录下 有文件 split_data.file 大小为423字节
把文件拆分为 100字节大小的
split -b 100 split_data.file
可以看到文件被拆为5个文件其中四个为100字节,一个为23字节。看到拆分后的文件后缀名为字母,前缀是x。
还可以使用 M (MB)、 G (GB)、 c (byte)、 w (word)
2、以数字为后缀
split -C 100 split_data.file -d # -C 以字节拆分 -d以数字为后缀
3、-a 指定后缀长度
split -b split_data.file 100 -d -a 3
4、修改前缀
直接把前缀放到命令中,以split_file为前缀
split -b 100 split_data.file -d -a 3 split_file
5、-l按照数据行来拆分
文件按4行来拆分
split -l 4 split_data.file
来看文件内容
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
命令详解:
有关这个命令的详细说明如下。
/SERVER/ 用来匹配某一行,分割过程即从此处开始。
/[REGEX]/ 表示文本样式。包括从当前行(第一行)直到(但不包括)包含“ SERVER ”
的匹配行。
{*} 表示根据匹配重复执行分割,直到文件末尾为止。可以用{整数}的形式来指定分割执
行的次数。
-s 使命令进入静默模式,不打印其他信息。
-n 指定分割后的文件名后缀的数字个数,例如01、02、03等。
-f 指定分割后的文件名前缀(在上面的例子中,server就是前缀)。
-b 指定后缀格式。例如 %02d.log ,类似于C语言中 printf 的参数格式。在这里文件名=
前缀+后缀= server + %02d.log
因为分割后的第一个文件没有任何内容(匹配的单词就位于文件的第一行中),所以我们删
除了server00.log