分享最新优惠信息
购买主机更加划算

Linux基础知识:8个典型Cut命令用法详解(剪切文件中行部分)

作为Linux用户,一般定期都需要与文本文件进行交互,而对这些文件执行的常见操作之一是文本过滤。Linux提供了许多用于文本过滤的命令行实用程序,例如–grep、fgrep、sed、awk,这样的例子不胜枚举。

在本文中,小编将介绍另一种名为Cut的文本过滤实用程序,它用于从输入行中删除特定部分。Cut命令根据字节位置、字符、字段和分隔符执行过滤。在本指南中,将通过Linux命令行中的示例来了解Cut命令。阅读本文之后,Linux命令行用户将能够在日常运维中有效地使用Cut命令。

Cut命令语法

Cut命令的语法与任何其它Linux命令一样,其格式如下:

$ cut <OPTIONS>... [FILE-1] [FILE-2] ...

在上面的语法中,尖括号(<>)表示强制参数,而方括号([])表示可选参数。

现在我们已经熟悉了Cut命令的语法。接下来,让我们创建一个示例文件作为示例:

$ cat file.txt

Linux示例文本文件

1、输出文件的第一个字节

Cut命令允许我们使用-b选项根据字节位置提取文本。让我们使用以下命令从文件的每一行中提取第一个字节:

$ cut -b 1 file.txt

打印文件的第一个字节

在此示例中,可以看到Cut命令仅显示第一个字符,因为所有字符都是一个字节长。

2、输出文件的多个字节

在前面的示例中,介绍了如何从文件中选择单个字节。然而,Cut命令还允许我们使用逗号选择多个字节。让我们使用以下命令从文件中选择前四个字节:

$ cut -b 1,2,3,4 file.txt

从文件打印多个字节

在此示例中,我们选择了连续字节,但这不是固定式的。实际上,可以在Cut命令中使用任何有效的字节位置。

3、输出文件的字节范围

在前面的示例中,使用逗号来选择连续的字节。但是,如果我们想要连续选择大量字节,则该方法不适合。在这种情况下,可以使用连字符(-)来指定字节范围。

为了理解这一点,让我们使用1-12作为字节范围来选择每行的前12个字节:

$ cut -b 1-12 file.txt

以类似的方式,我们也可以从中间选择一个字节范围。例如,以下命令从列号17到30中选择字节:

$ cut -b 17-30 file.txt

打印文件中的字节范围

4、输出指定文件的起始字节位置

有时候,我们想要从某个字节位置提取所有文本。在这种情况下,可以省略结束字节位置。例如,我们可以使用以下命令打印从位置17开始的所有字节:

$ cut -b 17- file.txt

从特定字节位置打印文本

在上面的命令中,17表示起始字节位置,而连字符(-)表示行结束。

5、输出指定文件的结束字节位置

类似地,我们也可以只指定结束字节位置。例如,以下命令打印从行首到第12列的所有字节:

$ cut -b -12 file.txt

打印指定文件的结束字节位置

在上面的命令中,连字符(-)代表行的开头,而12代表结束字节位置。

6、按字符位置剪切第一个字节

接下来将介绍如何根据字节位置执行文本提取。现在,让我们看看如何按字符位置进行文本提取。为了实现这一点,可以使用-c选项从以下多字节字符串中剪切第一个字节。

这里举个列子,具体如下:

$ echo école | cut -b 1

在上面的输出中,我们可以看到,Cut命令显示的是问号而不是字符é。发生这种情况是因为我们试图输出多字节字符的第一个字节。

现在,让我们使用-c选项来剪切相同的多字节字符并观察结果:

$ echo école | cut -c 1

é

在上面的输出中,可以看到Cut命令现在显示了预期的输出。

需要注意的是,并非所有版本的Cut命令都支持多字节字符。例如,Ubuntu及其衍生版本不支持多字节字符。为了理解这一点,让我们在源自Ubuntu的Linux Mint上运行相同的命令:

按字符位置剪切字节

在这里可以看到,Cut命令对多字节字符和单字节字符的处理是一样的。因此它不会产生预期的输出。

7、按分隔符剪切字符串

默认情况下,Cut命令使用制表符作为分隔符。但是,我们可以使用-d选项覆盖此默认行为。通常情况下,-d选项与用于选择特定字段的-f选项结合使用。

为了理解这一点,让我们使用空格字符作为分隔符并使用以下-f选项输出前两个字段:

$ cut -d " " -f 1,2 file.txt

在文件中按分隔符剪切字符串

在上面的示例中,我们使用逗号和-f选项来选择多个字段。

8、输出除所选字节或字符之外的所有字节或字符

有时我们想打印除少数字符之外的所有字符。在这种情况下,可以使用--complement选项。顾名思义,此选项打印除指定列之外的所有列。

$ cut -c 1 --complement file.txt

打印文件中未选择的字段

在上面的输出中,可以看到--complement选项输出了除第一个字符之外的所有字符。

需要注意的是,在本示例中,可以使用逗号来选择多个字段,但也可以使用其它支持的范围,具体可以参考本教程的前几个示例来了解有关范围信息。

结论

在本文当中,小编主要介绍了带有基于字节位置、字符位置和分隔符的文本过滤的Cut命令的典型示例,希望能够大家更好了解Cut命令,并且能够进行灵活的运用。如果你还知道Linux系统中Cut命令其它最佳用法示例,不妨分享出来。

未经允许不得转载:惠主机 » Linux基础知识:8个典型Cut命令用法详解(剪切文件中行部分)

相关文章