linux split方法,Linux Csplit命令为初学者解释(6个例子)

在Linux中的命令行工作时,您可能会发现自己处于需要将文件分割成多个部分的情况。 如果您已经在寻找一种方法来做到这一点,或者只是想知道如何做到这一点,您将很高兴知道存在一个名为csplit的工具,这个工具是为此而设计的。

在本教程中,我们将讨论此工具的基础知识以及如何使用它。 但是在我们这样做之前,值得一提的是,这里提到的所有命令/指令都已经在Ubuntu 16.04LTS上进行了测试。

Linux Csplit命令

命令的手册页面如何定义它:csplit - split a file into sections determined by context lines

以下是其通用语法:

csplit [OPTION]... FILE PATTERN...

csplit创建的各个小文件的名称如xx00和xx01。 以下定义 - 从命令的手册页 - 应该使事情更清楚:Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ..., and output byte

counts of each piece to standard output.

以下Q&A类型的示例应该让您了解csplit命令的工作原理。

Q1。 如何根据行数拆分文件?

假设您的文件包含6行,并且要求将该文件拆分为第三行,则可以通过在命令和文件名之后传递“3”作为命令行参数来完成。

例如,在我们的例子中,file1包含以下几行:1       Asia

2      Africa

3      Europe

4   North America

5   South America

6     Australia

这是我们执行的命令:

csplit file1 3

5e36275a502fb3b3b1fabcca5577e508.png

输出中产生的数字是命令产生的文件的字节数。 不用说,输出中产生了两个文件,即xx00和xx01。

7201972e9a4d0f59aea280b1985af8ce.png

这些文件的内容确认分组发生在行号3。

Q2。 如何使用正则表达式分割文件?

您还可以使用带有csplit命令的正则表达式。 例如,在以前的情况下,如果您希望工具再次重复该模式,那么可以使用以下命令来执行此操作:

csplit file1 3 {1}

所以在这种情况下,产生了三个输出文件:

d4ca7a5310b8ba44a78138c3ee82ac3a.png

Q3。 如何使用自定义前缀而不是默认的“xx”?

默认情况下,csplit在输出中生成的文件具有“xx”作为前缀。 但是,如果需要,可以使用-f命令行选项来更改前缀,这需要新的前缀作为其输入。

例如,以下命令将产生具有'htf'作为前缀的文件。

csplit file1 1 -f htf

5dc403e092cd25b68e4efb2a3f795c58.png

Q4。 如何强制csplit在出错时不删除输出文件?

默认情况下,csplit命令会在遇到错误情况时立即删除输出文件(如果已创建)。 例如,以下截图确认没有输出文件最终生成:

dab5eb90ef00c94ae669b43071043dca.png

但是,如果需要,可以使用命令中的-k选项来更改此行为。 例如,相同的命令被再次执行,但是使用此选项,并且输出文件没有被删除。

97081dece11688c670287a89b3825e6c.png

Q5。 如何抑制匹配输入模式的行?

csplit命令还提供了一个选项来抑制与输入模式匹配的行。 该选项是 - 抑制匹配 。

例如,以下命令将文件(file1)分割为第2行(xx00将包含第1行,而xx11将包含其余的行)。

csplit file1 2

但是如果要禁止第2行,则可以运行以下命令:

csplit --suppress-matched file1 2

Q6。 如何使用自定义数字而不是默认值2?

就像前缀本身一样,输出文件名中前缀的数字位数也是可定制的。 所以假设你想要像xx000和xx0001这样的名字,你可以使用-n命令行选项来执行此操作,这需要输入数字来表示新的位数。

例如:

csplit -n 1 file1 2

上述命令将产生像xx0,xx1等文件名。

结论

平均Linux命令行用户可能不需要每天使用csplit,但这绝对是您至少应该知道的重要实用程序。 我们已经介绍了大多数基本示例和命令行选项。 尝试一下,然后前往工具的手册页 ,了解更多信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值