6个初学者的Linux csplit命令示例

在Linux的命令行中工作时,您可能会遇到需要将文件拆分为多个部分的情况。 如果您已经在寻找一种方法来做到这一点,或者只是想知道如何做到这一点,那么您将很高兴知道是否有一种工具-称为 csplit -专为此目的而设计。

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

Linux csplit命令

这是人员页面定义csplit命令的方式:

csplit - разбивка файла на секции, определенных контекстных строк

以下是其一般语法:

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

单独创建小文件 csplit命令 名称如xx00和xx01。

以下类型的问答示例应使您对csplit命令的工作方式有一个很好的了解。

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

假设您的文件长6行,并且需要在第三行拆分该文件,则可以通过在命令和文件名后传递“ 3”作为命令行参数来实现。

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

1 Asia
2 Africa
3 Europe
4 North America
5 South America
6 Australia

这是我们运行的命令:

$ csplit file1 3
27
66

在输出上收到的数字是已执行命令文件的字节数。 不用说,输出中产生了两个文件,即xx00和xx01。

这些文件的内容确认划分是在第3行进行的。

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

您还可以使用csplit命令使用正则表达式。 例如,在前一种情况下,如果您希望该工具再重复一次绘图,则可以使用以下命令进行操作:

csplit file1 3 {1}

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

$ cat xx00
1 Asia
2 Africa
$ cat xx01
3 Europe
4 North America
5 South America
$ cat xx02
6 Australia

Q3。 如何更改自己的前缀而不是默认的“ xx”?

默认情况下,csplit命令生成的文件在输出中带有xx前缀。 但是,如果需要,可以使用命令行参数更改前缀。 -F需要新的前缀作为输入。

例如,以下命令将创建前缀为“ htf”的文件。

csplit file1 1 -f htf

$ csplit file1 1 -f htf
0
93
$ ls htf*
htf00 htf01

Q4。 如何使csplit不删除错误的输出文件?

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

$ csplit file1 1 2 {3}
13
28
36
csplit: '2': line number out of range on repetition 3
16
$ ls xx*
ls: cannot access 'xx*': No such file or directory

但是,如果需要,您可以使用选项更改此行为 -k 在一个团队中。 例如,再次运行同一命令,但使用此选项,并且这次没有删除输出文件。

$ csplit -k file1 1 2 {3}
13
28
36
csplit: '2': line number out of range on repetition 3
16
$ ls xx*
xx00 xx01 xx02 xx03

Q5。 如何隐藏与输入模式匹配的线?

csplit命令还提供了抑制与输入模式匹配的行的功能。 有问题的选项 –抑制匹配

例如,以下命令在第2行上分割文件(file1)(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命令不是用户常用的命令,但是它无疑是一个重要的实用程序,您至少应该了解它。 我们在这里介绍了大多数基本示例和命令行选项。 试试看,然后去 人工工具页面进一步了解她。

Sidebar