基于 Linux 的操作系统提供了许多可以在日常工作中使用的命令行文本处理实用程序。 cut 命令就是这样一种文本操作实用程序,它使用分隔符、字节、字段和列从平面文件数据库或行中获取所需的字符串。
由于平面文件数据库没有结构关系,并且记录在分隔符的帮助下分隔,因此 cut 是提取字符或字节信息的理想工具。 本文详细讨论了 cut 命令并演示了一些具有不同过滤器选项的实际示例,以帮助您开始使用该工具。
cut 命令概述
cut 使用以下基本语法:
cut <option> <file>
您还可以使用其他命令对其进行管道传输,如下所示:
echo “string_of_characters” | cut <options>
请注意,没有任何选项会产生错误。 以下是您可以使用 cut 来调用其各种功能的一些标志:
选项 | 描述 |
---|---|
-b | 按字节位置剪切 |
-C | 按字符位置剪切 |
-d | 使用 (-f) 字段选项指定的分隔符提取字符串 |
-F | 按指定字段提取 |
-s | 仅用于分隔符的提取 |
– 补充 | 打印除您指定的字段外的输出 |
–输出分隔符 | 用您指定的分隔符替换现有分隔符 |
以下是 cut 命令的一些示例,可帮助您更好地了解该工具及其功能。
1. 从字符串中提取特定字符
使用 -b 按字节数获取字符串的选项,如下所示:
echo "Hello World" | cut -b 1,2,3,5,8,9
输出:
Heloor
您还可以指定文件路径而不是字符串:
cut -b 1,2,3,4,5 filename.txt
或者您可以根据字符在文本中的位置提取字符。 使用 -C 选项后跟您需要获取的字符序列/顺序,如下所示:
echo "Hello World" | cut -c 1,2,3,5,6,8,10,11
输出:
Helo old
同样,要从平面文件数据库中获取字段或列,请使用 cut 命令和 -F 标志选项:
cut -f 3 database.txt
2. 字节或字符的剪切范围
您还可以使用 -b 使用 cut 命令标记以提取和打印多个字节范围,如下所示:
cut -b 1-7,16-23 database.txt
您可以使用 -C 标志如下:
cut -c 1-7,16-23 database.txt
3. 从开始或结束位置提取文本
使用 -cn- 从第 n 个字符开始到行尾提取文本的选项,其中 n 是字符串中字符的索引。
为了 example提取从第六个字符开始到行尾的字符串:
cut -c6- database.txt
或者使用以下命令从开始到最后获取 米 文件中的字符:
cut -c-8 database.txt
4. 从文件中剪切多个字段
您还可以使用 -F 旗帜。
cut -f 1,2 database.txt
输出:
NAME AGE
Jhon 20
Lisa 24
Jack 18
Bruce 23
Nancy 19
5. 使用分隔符提取文本
您可以使用 -d 标志以指定分隔符 -F 选项。 分隔符指定用于分隔文本文件中的字段的字符。
例如,要提取 /etc/passwd 文件的第一列,请使用冒号 (:) 作为分隔符:
cut -d ‘:’ -f 1 /etc/passwd
同样,给定文本流中的分隔符值是一个空格:
echo "The 1% of the 1%" | cut -d ' ' -f 2,3
输出:
1% of
6.更改显示的输出分隔符
这 –输出分隔符 flag 为 cut 命令输出增加了灵活性。 例如,您可以使用该标志在单独的行中显示输出,使用 $’n’ (换行符)值,如下:
grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'n'
输出:
alice
Alice
/bin/sh
此外,您还可以使用在输出中选择的分隔符替换输入文件的分隔符 –输出分隔符 旗帜:
grep root /etc/passwd | cut -d ':' -f 1,6,7 --output-delimiter=@
输出:
root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin
7. 仅当行包含分隔符时才剪切字段
使用 -s 仅当行包含分隔符时才提取字段的标志。 例如,以下命令将不会获取该字段 -f 1 除非它有空格分隔符:
echo "HelloWorld" | cut -d " " -f 1 -s
相反,下面提到的命令将生成一个输出,因为字符串包含指定的分隔符:
echo "Hello World" | cut -d " " -f 1 -s
输出:
Hello
同样,您也可以使用任何其他字符作为分隔符:
echo "Hello:World" | cut -d ":" -f 2 -s
输出:
World
8. 补充命令输出
cut 实用程序还允许您打印除指定字段之外的所有字段。 使用 – 补充 如下选项以获取除第五列之外的 root 用户帐户的所有详细信息:
grep "root" /etc/passwd | cut -d ':' --complement -s -f 5
输出:
root:x:0:0:/root:/bin/bash
同样,在 example 以下 -f 1 参数必须显示 你好 然而,文本,由于 – 补充 选项,它只打印其余部分。
echo "Hello to the whole World" | cut -d " " -f 1 --complement
输出:
to the whole World
9. 使用 sed 实用程序进行管道切割
最好的部分是您可以将 cut 命令与其他 Linux/Unix 命令的标准输出结合使用。
sed 就是这样一种文本编辑工具,您可以使用它来删除、插入和替换文本。 您可以轻松地将其输出通过管道传递给 cut 命令。
在里面 example 下面,grep 命令输出通过管道传送到 sed 实用程序,该实用程序将冒号 (:) 替换为连字符 (-),然后 cut 显示字段 1、6 和 7,如下所示:
grep alice /etc/passwd | sed 's/:/-/g' | cut -d ' ' -f 1,5,7
输出:
alice-x-1005-1008-Alice-/home/new/alice-/bin/sh
在 Linux 上使用 cut 处理文本
cut 命令是一个灵活高效的命令行实用程序,您可以在各种文本操作用例中使用它。 它利用操作从文件或标准输入数据中过滤掉文本。 该实用程序还有一个优势,使用户能够限制他们想要显示的文本并添加他们自己选择的分隔符。
但是,此命令也有一些限制。 您不能使用正则表达式来指定分隔符或使用并发的多个剪切命令选项。 本文介绍了该实用程序的基本到高级实际示例,以帮助初学者清楚地了解 Linux 上的文本操作命令。