欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > linux 操作系统下csplit命令介绍和使用案例

linux 操作系统下csplit命令介绍和使用案例

2024/10/24 7:31:07 来源:https://blog.csdn.net/lisanmengmeng/article/details/142051836  浏览:    关键词:linux 操作系统下csplit命令介绍和使用案例

linux 操作系统下csplit命令介绍和使用案例

csplit命令是Linux系统中用于根据特定模式将文件分割成多个小文件的工具。与split命令不同,csplit允许用户根据文件内容的特定模式(如行号或正则表达式)来进行分割

csplit命令概述

基本语法

bash
csplit [options] file pattern...

主要功能

  • 将指定的文件按照用户定义的模式进行分割。
  • 分割后的文件会被命名为xx00、xx01等,用户可以自定义文件名前缀。

常用选项

  • -b, --suffix-format=FORMAT: 指定输出文件名的格式。
  • -f, --prefix=PREFIX: 指定输出文件名前缀,默认为xx。
  • -n, --digits=N: 指定输出文件名的数字位数。
  • -k, --keep-files: 保留在分割过程中出现错误的输出文件。
  • -s, --quiet: 不显示输出文件的大小信息。
  • -z, --elide-empty-files: 删除空的输出文件。

模式

  • INTEGER: 复制指定行数的内容。
  • /REGEXP/[OFFSET]: 从匹配到的行开始,按照偏移量复制指定行数的内容。
  • %REGEXP%[OFFSET]: 忽略匹配到的行。
  • {N}: 重复前一个模式N次。
  • *: 一直匹配到文件结尾。

命令选项:

root@meng:~# which csplit

/usr/bin/csplit

root@meng:~# csplit --help

Usage: csplit [OPTION]... FILE PATTERN...

Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ...,

and output byte counts of each piece to standard output.

Read standard input if FILE is -

Mandatory arguments to long options are mandatory for short options too.

-b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d

-f, --prefix=PREFIX use PREFIX instead of 'xx'

-k, --keep-files do not remove output files on errors

--suppress-matched suppress the lines matching PATTERN

-n, --digits=DIGITS use specified number of digits instead of 2

-s, --quiet, --silent do not print counts of output file sizes

-z, --elide-empty-files remove empty output files

--help display this help and exit

--version output version information and exit

Each PATTERN may be:

INTEGER copy up to but not including specified line number

/REGEXP/[OFFSET] copy up to but not including a matching line

%REGEXP%[OFFSET] skip to, but not including a matching line

{INTEGER} repeat the previous pattern specified number of times

{*} repeat the previous pattern as many times as possible

A line OFFSET is a required '+' or '-' followed by a positive integer.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>

Report any translation bugs to <https://translationproject.org/team/>

Full documentation <https://www.gnu.org/software/coreutils/csplit>

or available locally via: info '(coreutils) csplit invocation'

root@meng:~# csplit

csplit: missing operand

Try 'csplit --help' for more information.

root@meng:~#

命令案例:

root@meng:~# ls

f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng meng.cpio meng.sh meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp

root@meng:~# more m1.txt

hello men

g

hello meng

g

Hello World

This is a test

HelloWorld

Hello World

This is a test

root@meng:~# csplit m1.txt 3

12

97

root@meng:~# ls

f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng meng.cpio meng.sh meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp xx00 xx01

root@meng:~# more xx00 xx01

::::::::::::::

xx00

::::::::::::::

hello men

g

::::::::::::::

xx01

::::::::::::::

hello meng

g

Hello World

This is a test

HelloWorld

Hello World

This is a test

root@meng:~#

csplit m2.txt /meng/ -n2 -f sm -b "%02d.log"

  • /meng/: 匹配包含meng的行。
  • -n2: 输出文件名使用两位数字。
  • -f sm: 输出文件名前缀为sm。
  • -b "%02d.log": 输出文件名格式为sm00.log、sm01.log等。

root@meng:~# cat m2.txt

hlo men

g

hlo meng

g

his is a test

HloWorld

his is a test

root@meng:~# csplit m2.txt /meng/ -n2 -f sm -b "%02d.log"

11

84

root@meng:~# ls

f1.txt.bz2 m1.txt m2.txt meng.cpio meng.txt rec00001f1.txt s2.txt sm01.log tmp xx01

f2.txt.bz2 m1.txt.bak meng meng.sh meng.txt.bz2 s1.txt sm00.log snap xx00

root@meng:~# cat sm01.log

hlo meng

g

his is a test

HloWorld

his is a test

root@meng:~# cat sm00.log

hlo men

g

root@meng:~#

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com