根据指定的 PATTERN 对文件进行分割,将分割的内容分别保存到“xx00”、“xx01”、....名称的文件中,并将每个文件的字节数输出到标准输出。
如果 FILE 为 -,则从标准输入读取数据。
csplit [OPTION]... FILE PATTERN...
-b, --suffix-format=FORMAT 修改预设文件输出格式,使用 sprintf FORMAT 代替 %02d,FORMAT 为格式化字符串
-f, --prefix=PREFIX 预设的输出文件名前缀为“xx”,用户可以通过 PREFIX 进行替换
-k, --keep-files 出错时不删除输出文件
--suppress-matched 抑制匹配PATTERN的行
-n, --digits=DIGITS 预设的输出文件名位数为2,其文件名称为 xx00, xx01...等,如果你指定输出文件名位数为 3,则输出的文件名称会变成 xx000, xx001...等。
-s, --quiet, --silent 不打印输出文件大小
-z, --elide-empty-files 删除空的输出文件
--help 显示帮助信息并退出
--version 显示版本信息并退出
PATTERN 的取值:
INTEGER 复制到但不包括指定的行
/REGEXP/[OFFSET] 复制到但不包括匹配的行
%REGEXP%[OFFSET] 跳转到,但不包括匹配行
{INTEGER} 重复前一个模式的指定次数
{*} 尽可能多地重复前一种模式
注意:行 OFFSET 由一个必需的 '+' 或 '-' 符号,后面跟一个正整数。
(1)将标准输入的数据,根据第2行进行分割成两个文件,如下:
# 准备数据 hxstrive@localhost:~$ cat demo line1 line2 line3 line4 line5 # 使用 cat 配合管道 | 命令,作为 csplit 命令的输入 hxstrive@localhost:~$ cat demo | csplit - 2 6 30 # 查看分割后文件内容 hxstrive@localhost:~$ ls demo xx00 xx01 hxstrive@localhost:~$ cat xx00 line1 hxstrive@localhost:~$ cat xx01 line2 line3 line4 line5
(2)对文件 demo 进行分割,从第5行开始分割,如下:
# 准备数据 hxstrive@localhost:~$ cat demo line1 line2 line3 line4 line5 # 分割文件 hxstrive@localhost:~$ csplit ./demo 5 24 6 # 查看分割后文件内容 hxstrive@localhost:~$ ls demo xx00 xx01 hxstrive@localhost:~$ cat xx00 line1 line2 line3 line4 hxstrive@localhost:~$ cat xx01 line5
(3)使用指定的前缀和序列位数生成分割后的文件,如下:
# 准备数据 hxstrive@localhost:~$ cat demo line1 line2 line3 line4 line5 # 指定前缀为 myfile,序列位数为4 hxstrive@localhost:~$ csplit -f myfile -n 4 ./demo 4 18 12 # 查看分割后文件内容 hxstrive@localhost:~$ ls demo myfile0000 myfile0001 hxstrive@SD-20220207PFHW:~$ cat myfile0000 line1 line2 line3 hxstrive@localhost:~$ cat myfile0001 line4 line5
(4)根据正则表达式进行分割,如下:
# 准备数据 hxstrive@localhost:~$ cat demo line1 line2 ## line3 line4 ## line5 # 重复匹配 /##/ 进行分割 hxstrive@localhost:~$ csplit ./demo /##/ {*} 6 15 15 # 查看分割后文件内容 hxstrive@localhost:~$ cat xx00 line1 hxstrive@localhost:~$ cat xx01 line2 ## line3 hxstrive@localhost:~$ cat xx02 line4 ## line5
更多关于命令详细参考手册,请使用 man 命令或者 --help 参数获取帮助信息