csplit 分割文件

作用

根据指定的 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 参数获取帮助信息

关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号