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

语法
cut OPTION... [FILE]...
选择列
Cut命令提供了根据所有行的字符数选择指定列的功能。在这里,我们将把所有3个字符的行逐行打印到控制台。这将只打印一个字符。
$ cut -c3 fruits.txt

为字符范围选择列
在上一个示例中,我们已将单个字符打印到终端。我们还可以通过如下指定字符范围,将多个字符打印到控制台。我们可以看到字符索引从1开始。
$ cut -c1-6 fruits.txt

使用起始位置选择列
cut的另一个有用特性是只指定从开始到结束的位置。
$ cut -c3- fruits.txt

使用结束选择列 位置
我们可以打印从开始到指定位置的范围,只指定结束位置。这将假定起始位置为1
$ cut -c-3 fruits.txt

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

选择多个字段
正如我们在字符中所做的那样,我们还可以指定字段范围。我们将使用以下命令选择水果名称和计数。
$ cut -f1-2 fruits.txt

下面的示例逐个选择多个不使用范围的字段。
$ cut -f1,2,3 fruits.txt

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

选择字段包括 指定字符
默认情况下 cut
不能根据字符排除行,但是 grep
可以很容易地用于实现此功能。我们将只选择包含 app
$ grep 'app' fruits.txt | cut -f1-2

选择除指定字符以外的字段
我们可以反转前面的示例并删除不需要的行。我们将删除包含 app
然后打印从1到2的列。
$ grep -v 'app' fruits.txt | cut -f1-2

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

除字段外打印
如前所述,字段也可以打印为范围。我们也可以通过排除字段来打印。这将打印所有重命名字段。下面的示例中,我们可以打印除2以外的所有字段。
相关文章: limits.conf文件对用户进行限制,在Linux中进行处理并举例说明
更改分隔符
默认情况下,文本可能有分隔符。在某些情况下,我们可能需要在打印到控制台时更改分隔符。 --output-delimiter
选项可用于此操作。下面的示例将制表符分隔符更改为逗号。
$ cut -f1,2,3 --output-delimiter=',' fruits.txt
