
Linux 中的 cut 命令是文本处理的重要实用程序,旨在从文件的每一行或管道输入中提取特定的段。此命令不会修改原始文件,而是读取数据并在标准输出中显示所需的部分。在本指南中,我们将深入探讨 Linux 中 cut 命令的功能,并提供实际的示例来演示其用法。
探索 cut 命令
对于任何处理结构化文本的人来说,cut命令cut
都非常有用,它有助于在类 Unix 环境中有效地操作和提取数据。cut 可以根据字节位置、字符位置、分隔符或字段提取行中的部分内容,在 Shell 脚本和命令行操作中过滤和组织数据方面非常实用。它的应用范围很广,从检索 CSV 文件中的特定列到修剪不必要的字符或分析日志。虽然 cut 通常直接用于文件,但在管道中使用时,它也可以与其他命令的输出无缝交互。
cut 命令的基本语法
cut 命令很简单,使用选项加上文件名。语法如下:
cut [OPTIONS] [FILE]
在此结构中,OPTIONS 指定了 cut 命令的操作方式,允许您选择字段分隔符(例如逗号)、选择特定字段、设置范围以及排除缺少分隔符的行等。如果未指定文件,cut 将从标准输入读取。此外,您还可以提供多个文件,这些文件将被视为组合实体进行处理。
常用选项
剪切命令提供了多种选项,可以精确定位要提取的文本片段。以下是一些最常用的选项:
- -f或–fields=LIST:允许根据指定的分隔符选择特定字段。
- -b或–bytes=LIST:从每一行提取指定的字节。
- -c或–characters=LIST:从每一行检索特定字符。
- -d或–delimiter:设置自定义分隔符而不是默认制表符。
- –complement:输出除指定字段、字节或字符之外的所有内容。
- -s或–only-delimited:跳过缺少分隔符的行;默认情况下包含此类行。
- –output-delimiter:允许选择不同的输出分隔符,与输入分隔符形成对比。
-f
、-b
和选项-c
使用 LIST 来定义要提取的内容。您可以指定以下内容:
- 单个数字,例如 2。
- 用逗号分隔的多个数字,例如 1, 3, 5。
- 类似 2-4 的范围(提取从 2 到 4 的值)。
-
N-
表示从位置 N 提取到末尾。 -
-M
表示从起始点提取至位置 M。
在 Linux 中使用 cut 命令
为了说明 cut 命令的功能,让我们执行一些实际示例。首先,我们使用 echo 命令创建一个名为“mte.csv”的示例文件:
echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

接下来,我们可以使用 cat 命令检查文件的内容:
cat mte.csv

值得一提的是,cut 命令仅仅显示指定的输出,而不会改变文件本身。
按字符提取数据
要按位置提取字符,请使用-c
cut 命令的选项:
cut -c 1, 8 mte.csv
此命令从每行中提取第一个和第八个字符:

要提取指定范围内的字符,请应用以下命令:
cut -c 1-8 mte.csv
提取每行中位置 1 至 8 的字符:

按字节提取
要提取特定字节,请使用-b
cut 命令的选项:
cut -b 1-3 mte.csv
此命令从文件的每一行中提取前三个字节mte.csv
:

按字段(列)提取
要从文件中提取整个字段,请使用带有-f
和-d
选项的 cut 命令:
cut -d', ' -f2 mte.csv
在此命令中,-d', '
指定逗号作为分隔符,而-f2
表示 cut 应从每行中提取第二个字段:

在 cut 中实现自定义分隔符
虽然 cut 默认使用制表符作为分隔符,但如果字段由其他字符分隔,请使用-d
指定正确的字符。例如,要从空格分隔的句子中提取第五个单词,可以使用:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

提取过程中排除特定字段
你可以在从文件中提取文本时省略某些字段,只需--complement
在 cut 命令中使用相应选项即可。此选项指定 cut 命令输出除指定字段之外的所有字段:
cut -d', ' -f1 mte.csv --complement
此命令跳过第一列并返回其余内容:

修改默认输出分隔符
默认情况下,提取字段时,cut 命令会在输出中保留输入分隔符。但是,您可以使用以下--output-delimiter
选项更改输出分隔符:
cut -d', ' -f1-3 --output-delimiter='-' mte.csv
此命令使用连字符作为输出中的分隔符:

将 cut 与其他 Linux 命令结合使用
cut 命令还可以与其他 Linux 命令结合使用,使用管道符 | 。例如,以下命令从命令的每个输出行中提取前五个字符who
:
who | cut -c 1-5

在另一个示例中,您可以将 cut 命令与 head 一起使用来显示“mte.csv”的前两行,仅提取 empName 和 empDesig 字段:
head -n 2 mte.csv | cut -d ', ' -f2, 3

使用 Linux cut 命令浏览不规则数据格式
cut 命令在处理格式正确且使用一致分隔符(例如逗号或制表符)的数据时效果显著。但是,如果遇到空格不一致或分隔符混合的文件,单独使用 cut 命令可能会产生不理想的结果。为了解决这些问题,通常建议提前使用tr
或 之类的命令清理数据sed
,以确保 cut 命令能够有效地提取正确的部分。
管理多余空间
考虑一个名为“mteData.txt”的文件,其中字段由不同的空格分隔:
cat mteData.txt

由于 cut 预期单个分隔符,因此tr
在应用 cut 之前利用它对间距进行规范化:
cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2
此命令处理“mteData.txt”,使用将多个空格替换为一个空格tr
,然后提取前两个字段:

管理混合分隔符
如果文件同时使用空格和逗号,请使用 规范化格式sed
。例如,名为“mteData1.txt”的文件包含:
cat mteData1.txt

利用sed
cut 将所有空格转换为逗号,然后提取第一个和第三个字段:
sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

结论
在本文中,我们探索了 Linux cut 命令的功能,它是从文件或管道输入中提取数据的重要工具。其简单的语法让您可以轻松地根据指定的分隔符获取字符、字节或字段。此外,我们还展示了如何将 cut 命令与其他实用程序(例如tr
、sed
和 )结合使用head
,以管理不干净的数据并实现更高效的输出。无论您是处理 CSV 文件、分析日志还是清理数据,cut 命令都是类 Unix 环境中文本处理不可或缺的工具。
常见问题
1. Linux 中 cut 命令的主要用途是什么?
Linux 中的 cut 命令主要用于从文件或其他命令的输出中提取特定的文本部分。它使用户能够根据分隔符、字节位置或字符位置有效地操作和格式化数据。
2.我可以将 cut 命令与其他 Linux 命令结合使用吗?
是的!cut 命令可以使用管道符号 (|) 与其他 Linux 命令无缝集成。这可以实现强大的数据处理功能,让您能够过滤和格式化各种命令的输出。
3.如何在使用 cut 命令时指定自定义分隔符?
您可以使用 选项后跟所需的分隔符来指定自定义分隔符-d
。例如,要使用逗号作为分隔符,您可以使用-d', '
。
发表回复 ▼