工作原理

将该文件分割成多个大小1k的文件,方法如下

[root@shaofeng ~]# split -b 1k data.file
[root@shaofeng ~]# ls
-rw-r--r--   1 root root  1024 12月  8 13:35 xaa
-rw-r--r--   1 root root  1024 12月  8 13:35 xab
-rw-r--r--   1 root root  1024 12月  8 13:35 xac
-rw-r--r--   1 root root  1024 12月  8 13:35 xad
-rw-r--r--   1 root root  1024 12月  8 13:35 xae
-rw-r--r--   1 root root   664 12月  8 13:35 xaf

如果想以数字为后缀,可以另外使用-d参数。此外,使用-a length可以指定后缀长度:

[root@shaofeng data]# split -b 1k data.file -d -a 4
[root@shaofeng data]# ls -all
总用量 40
drwxr-xr-x   2 root root 4096 12月  8 13:41 .
dr-xr-x---. 12 root root 4096 12月  8 13:40 ..
-rw-r--r--   1 root root 5784 12月  8 13:35 data.file
-rw-r--r--   1 root root 1024 12月  8 13:41 x0000
-rw-r--r--   1 root root 1024 12月  8 13:41 x0001
-rw-r--r--   1 root root 1024 12月  8 13:41 x0002
-rw-r--r--   1 root root 1024 12月  8 13:41 x0003
-rw-r--r--   1 root root 1024 12月  8 13:41 x0004
-rw-r--r--   1 root root  664 12月  8 13:41 x0005

补充内容

为分割后的文件指定文件名前缀

[root@shaofeng data]# split -b 1k data.file -d -a 4 split_file
[root@shaofeng data]# ls -all
总用量 40
drwxr-xr-x   2 root root 4096 12月  8 13:47 .
dr-xr-x---. 12 root root 4096 12月  8 13:47 ..
-rw-r--r--   1 root root 5784 12月  8 13:35 data.file
-rw-r--r--   1 root root 1024 12月  8 13:47 split_file0000
-rw-r--r--   1 root root 1024 12月  8 13:47 split_file0001
-rw-r--r--   1 root root 1024 12月  8 13:47 split_file0002
-rw-r--r--   1 root root 1024 12月  8 13:47 split_file0003
-rw-r--r--   1 root root 1024 12月  8 13:47 split_file0004
-rw-r--r--   1 root root  664 12月  8 13:47 split_file0005

分割成多个文件,每个文件包含10行

[root@shaofeng data]# split -l 10 data.file
[root@shaofeng data]# ls -all
总用量 560
drwxr-xr-x   2 root root 4096 12月  8 13:49 .
dr-xr-x---. 12 root root 4096 12月  8 13:49 ..
-rw-r--r--   1 root root 5784 12月  8 13:35 data.file
-rw-r--r--   1 root root   40 12月  8 13:49 xaa
-rw-r--r--   1 root root   43 12月  8 13:49 xab
-rw-r--r--   1 root root   43 12月  8 13:49 xac
-rw-r--r--   1 root root   43 12月  8 13:49 xad

csplit

[root@shaofeng data]# csplit server.log /SERVER/ -n 2 -f server {*} -b "%02d.log"
0
23
23
23
[root@shaofeng data]# ls -all
总用量 24
drwxr-xr-x   2 root root 4096 12月  8 14:12 .
dr-xr-x---. 12 root root 4096 12月  8 14:12 ..
-rw-r--r--   1 root root    0 12月  8 14:12 server00.log
-rw-r--r--   1 root root   23 12月  8 14:12 server01.log
-rw-r--r--   1 root root   23 12月  8 14:12 server02.log
-rw-r--r--   1 root root   23 12月  8 14:12 server03.log
-rw-r--r--   1 root root   69 12月  8 13:52 server.log
[root@shaofeng data]# cat server01.log
SERVER-1
[connetion] 1
  • /SERVER/用来匹配某一行,分割过程即从此处开始。
  • /[REGEX/表示文本样式。包括从当前行(第一行)直到(但不包括)包含"SERVER"的匹配行。
  • {*}表示根据匹配重复执行分割,直到文件末尾为止。可以用{整数}的形式来指定分割执行次数。
  • -s使命令进入静默模式,不打印其他信息。
  • -n指定分割后的文件名后缀的数字个数,例如01、02、03等。
  • -f指定分割后的文件名前缀(在上面的例子中,server就是前缀)。
  • -b指定后缀格式。例如%02d.log,类似于C语言中printf的参数格式。在这里文件名=前缀+后缀=server+%02d.log

results matching ""

    No results matching ""