cut命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中。我们可以使用cut命令从一行字符串中于以字节,字符,字段(分隔符)等单位截取一部分内容出来。

1.命令格式:

1
cut [选项] [文件]...

2.命令功能:

 cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

3.命令参数:

1
2
3
4
5
6
7
-f, 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d, Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。
-b, 提取指定的字节,也可以指定一个范围。
-c, 提取指定的字符,可以是以逗号分隔的数字的列表,也可以是以连字符分隔的数字的范围。
–complement, 补充选中的部分,即**反选**。
–output-delimiter, 修改输出时使用的分隔符。
--only-delimited, 不输出不包含分隔符的列。

4.使用实例:

实例1:打印出/etc/passwd文件每一行的第一个字段,用的分隔符是’:’

1
2
3
4
5
# -d:指定分隔符;-f指定打印第几个字段
cut -d ':' -f 1 /etc/passwd

cut -d':' -f1 /etc/passwd
cut -d: -f1 /etc/passwd

实例2:提取多个字段

1
2
3
4
5
# 从 /etc/passwd 中包含字符串 /bin/bash 的行提取第一和第六个字段。
grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
# 要显示字段的某个范围,可以指定开始和结束的字段,中间用连字符(-)连接,如下所示:
# 显示1-4,6,7字段
grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7

实例3:要补全选择输出的字段(即反选),使用 –complement 选项。这一选项输出所有的字段,除了指定的字段。

1
2
# 要补全选择输出的字段(即反选),使用 --complement 选项。这一选项输出所有的字段,除了指定的字段。
grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2

实例4:指定输出的分隔符

1
2
3
4
# 加上--output-delimiter选项,将输出分隔符指定为空格
cut -d: -f1,7 --output-delimiter ' ' /etc/passwd
# 用分隔符让每一行打印一个字段,将 --output-delimiter 指定为 $'\n' 表换行。
grep "/bin/bash" /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n'

实例5:以字符的方式提取内容

1
2
3
4
5
6
7
8
# 打印 context.txt 文件每一行的第一个字符
cut -c 1 content.txt
# 打印 context.txt 文件每一行的第一至七个字符
cut -c 1-7 content.txt
# 提取第二个到最后一个字符
cut -c 2- content.txt
# 提取第一到第四个字符
cut -c -4 content.txt

实例6:根据字节提取

1
2
3
4
5
# 使用-b 选项通过指定字节的位置来选择一行的某一部分,使用逗号分隔每个指定位置,或用连字符 - 指定一个范围
# 提取 content.txt 文件每一行的第一,二,三个字节
cut -b 1,2,3 content.txt
# 列出一个范围
cut -b 1-3,5-7 content.txt