Linux cut 命令 | 分割截取文件中每行的字符串数据
• 最后修改:2025-06-26 • 阅读量:42
Linux cut ( cut ) 命令用于截取、分割文件中每行的字符串数据内容。
cut 命令的定义解释
在 Linux 和 FreeBSD 系统中,有许多实用程序可用于处理和过滤文本文件。cut 是一个命令行实用程序,允许您从指定文件或管道数据中切割、截取行内容的部分字符串数据,并将结果打印到标准输出。它可以按分隔符、字节位置和字符分割、截取行中的部分内容。
本文将通过实际示例和对最常见选项的详细解释,向您展示如何使用cut命令。
cut 命令语法
cut 命令的基本语法形式为:
cut OPTION... [FILE]...
[OPTION]
:选项名,必须提供[FILE]
:可选;分割、截取内容的文件,当不提供时,从标准输入读取数据
使用 cut
在裁剪行中选定部分时可使用字段、字节或字符位置,具体标志如下:
- -f (--fields=LIST):指定一个字段、以逗号分隔的一组字段或一个范围的字段。这是最常用的选项。
- -b (--bytes=LIST):指定一个字段、以逗号分隔的一组字段或一个范围的字节。
- -c (--characters=LIST):指定一个字段、以逗号分隔的一组字段或一个范围的字符。
可以使用其他标志符:
- -d (--delimiter):指定一个分隔符,替代默认的
tab
分隔符。 - --complement:当使用此选项时,cut 命令显示除选定的字节、字符或字段之外的所有字节、字符或字段。
- -s (--only-delimited):默认情况下,cut 命令会输出不包含分隔符的行;使用此选项时,cut 命令输出包含分隔符的行。
- --output-delimiter:cut 命令的默认行为是使用输入分隔符作为输出分隔符,使用此选项指定输出分隔符。
截取内容时 LIST
的取值:
N
:第 N 个字段,字节或字符,从1开始。N-
:从第 N 个字段、字节或字符到行尾。N-M
:从第 N 到第 M 个字段、字节或字符。-M
:从第 1 到第 M 个字段、字节或字符。
cut 命令使用示例
在下面的示例中,将基于文件 test.txt
说明 cut 命令的用法,test.txt
文件的内容如下(其中各字段使用 tab 分开):
Sat:周六 上午 打篮球 张三 10:00--11:00
Sun:周日 下午 踢足球 李四 15:00--16:00
基于字段截取数据
1、使用 -f
选项,分割、截取文件中的第 1 和第 3 个字段:
cut test.txt -f 1,3
输出内容为:
Sat:周六 打篮球
Sun:周日 踢足球
2、使用 -f
选项,分割、截取文件中的第 1 至第 4 个字段:
cut test.txt -f -4
输出内容为:
Sat:周六 上午 打篮球 张三
Sun:周日 下午 踢足球 李四
自定义分隔符
cut 命令默认的分隔符为 tab
,使用 -d
选项自定义分隔符。
使用 -d
选项定义分隔符 :
,分割、截取文件中的第 1 和第 2 个字段:
cut test.txt -d ":" -f 1,2
输出内容为:
Sat:周六 上午 打篮球 张三 10
Sun:周日 下午 踢足球 李四 15
选择指定字段的补集
要选择指定字段列表的补集,需要使用 --complement
选项,将只打印那些没有使用 -f
选项选择的字段。
使用 --complement
选项,输出除第 1 和第 3 个字段以外的所有字段:
cut test.txt -f 1,3 --complement
输出内容:
上午 张三 10:00--11:00
下午 李四 15:00--16:00
指定输出分隔符
默认情况下输出分隔符使用输入分隔符,可以使用 --output-delimiter
选项指定输出分隔符。
使用 --output-delimiter
选项,将输出分隔符设置为 ;
:
cut test.txt -f 1,3 --output-delimiter=';'
输出内容:
Sat:周六;打篮球
Sun:周日;踢足球
基于字节和字符截取字符串数据
一个字节为 8 位,与使用的编码无关。一个字符使用的字节数与使用的编码方式有关,在 UTF-8 中,字符可以用 1 个字节到 4 个字节表示,但是目前基于字符的截取也是截取一个字节,而不是截取基于文件编码的一个字符长度。
在本例中文件使用的编码为 UTF-8
,本例中包含中文,一个中文占 3 个字节,所以当截取的内容不是一个完整的汉字时,就会存在乱码。
1、使用 -b
选项,基于字节截取文件中的第 1 和第 2 个字节 :
cut test.txt -b 1,2
输出内容:
Sa
Su
2、使用 -c
选项,基于字节截取文件中的第 1 和第 2 个字节 :
cut test.txt -c 1,2
输出内容:
Sa
Su
当前:使用 -b
与 -c
都是截取指定的字节,截取的内容相同。
截取中文解释说明
示例文件 test.txt
中的第 5-7 字节为汉字 周
,第 8-10 字节为汉字第一行为 六
,第二行为 日
,截取不是完整汉字字节时就会乱码。
1、使用 -c
选项,基于字节截取文件中的第 8 至第 10 个字符的汉字:
cut test.txt -c 8-10
输出内容:
六
日
2、使用 -c
选项,基于字节截取文件中的第 9 至第 10 个字符(不是完整汉字,则乱码):
cut test.txt -c 9-10
输出内容:
��
��
cut 命令选项解释
如下给出了 Linux cut 命令中所有选项的解释说明:
选项 | 解释说明 |
---|---|
-b, --bytes=LIST | 指定一个字段、以逗号分隔的一组字段或一个范围的字节 |
-c, --characters=LIST | 指定一个字段、以逗号分隔的一组字段或一个范围的字符 |
-d, --delimiter=DELIM | 指定一个分隔符,替代默认的 tab 分隔符 |
-f, --fields=LIST | 指定一个字段、以逗号分隔的一组字段或一个范围的字段,这是最常用的选项 |
-n | 忽略此选项 |
--complement | 当使用此选项时,cut 命令显示除选定的字节、字符或字段之外的所有字节、字符或字段 |
-s, --only-delimited | 默认情况下,cut 命令会输出不包含分隔符的行;使用此选项时,cut 命令输出包含分隔符的行 |
--output-delimiter=STRING | cut 命令的默认行为是使用输入分隔符作为输出分隔符,使用此选项指定输出分隔符为 STRING |
-z, --zero-terminated | 行分隔符是 NUL,而不是换行符 |
--help | 显示帮助信息后退出 |
--version | 显示版本信息后退出 |
结语
在本教程中我们介绍了如何使用 cut ( cut ) 命令截取、分割文件中每行的字符串数据内容,允许您从指定文件或管道数据中切割、截取行内容的部分字符串数据,并将结果打印到标准输出。它可以按分隔符、字节位置和字符分割、截取行中的部分内容。
该 cut 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。