Linux剪切命令及其示例

Linux提供 cut 用于从bash中的每行输出中删除节的命令。 cut 命令提供了一种从文件或标准输出中筛选提取列/文本的机制。下面是详细的例子。我们有以下文本文件名为 fruits.txt

null
apple   1       good grape   5       bad banana  2       not bad
Example Text
示例文本

语法

cut OPTION... [FILE]...

选择列

Cut命令提供了根据所有行的字符数选择指定列的功能。在这里,我们将把所有3个字符的行逐行打印到控制台。这将只打印一个字符。

$ cut -c3 fruits.txt
Select Column
选择列

为字符范围选择列

在上一个示例中,我们已将单个字符打印到终端。我们还可以通过如下指定字符范围,将多个字符打印到控制台。我们可以看到字符索引从1开始。

$ cut -c1-6 fruits.txt
Select Column For Character Range
为字符范围选择列

使用起始位置选择列

cut的另一个有用特性是只指定从开始到结束的位置。

$ cut -c3- fruits.txt
Select Column Using Start Position
使用起始位置选择列

使用结束选择列 位置

我们可以打印从开始到指定位置的范围,只指定结束位置。这将假定起始位置为1

$ cut -c-3 fruits.txt
Select Column Using End Position
使用结束位置选择列

选择单个字段

字段是用空格、制表符、双逗号等特定字符分隔的文本的一部分。我们可以选择带有字段号的文本。默认情况下,字段分隔符是tab。我们的文本已经提供给了定界页签。在本例中,我们将选择3.field。

$ cut -f3 fruits.txt
Select Single Field
选择单个字段

选择多个字段

正如我们在字符中所做的那样,我们还可以指定字段范围。我们将使用以下命令选择水果名称和计数。

$ cut -f1-2 fruits.txt
Select Multiple Fields
选择多个字段

下面的示例逐个选择多个不使用范围的字段。

$ cut  -f1,2,3 fruits.txt
Select Multiple Fields
选择多个字段

最后一个字段

最流行的用法之一 cut 正在打印最后一个字段。问题是字段计数可能会根据文本而变化,我们不能仅使用 cut 命令。下面的示例使用 rev 获取最后一个字段的命令。

$ cat fruits.txt | rev | cut -f1 | rev
Last Field
最后一个字段

选择字段包括 指定字符

默认情况下 cut 不能根据字符排除行,但是 grep 可以很容易地用于实现此功能。我们将只选择包含 app

$ grep 'app' fruits.txt | cut -f1-2
Select Fields Include Specified Chars
选择包含指定字符的字段

选择除指定字符以外的字段

我们可以反转前面的示例并删除不需要的行。我们将删除包含 app 然后打印从1到2的列。

$ grep -v 'app' fruits.txt | cut -f1-2
Select Fields Except Specified Chars
选择除指定字符以外的字段

指定分隔符

分隔符用于分隔字段。默认情况下,选项卡用作分隔符。但可以用 -d 选项如下。下面的例子中,我们使用 : 作为分隔符,因为 passwd 文件使用它。然后我们只想显示驻留在字段1中的用户名。

$ cut -d: -f1 /etc/passwd
Specify Delimiter
指定分隔符

除字段外打印

如前所述,字段也可以打印为范围。我们也可以通过排除字段来打印。这将打印所有重命名字段。下面的示例中,我们可以打印除2以外的所有字段。

相关文章: limits.conf文件对用户进行限制,在Linux中进行处理并举例说明

更改分隔符

默认情况下,文本可能有分隔符。在某些情况下,我们可能需要在打印到控制台时更改分隔符。 --output-delimiter 选项可用于此操作。下面的示例将制表符分隔符更改为逗号。

$ cut  -f1,2,3 --output-delimiter=',' fruits.txt
Change Delimiter
更改分隔符

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享