- 一、命令介绍
- 二、常用选项
- 三、命令示例
- 根据指定的字节范围显示指定文件中的内容
- 指定字段分隔符,显示指定字段的内容
- 显示指定字段的内容
- 根据指定的字符范围显示指定文件中的内容
- 显示指定字段以外的字段的内容
- 以指定的输出分隔符来分割输出内容中的字段
- 合并多个文件的内容
命令 cut
可以用来分割字符串,显示指定范围的内容,可以具体根据指定的字节范围、字符范围、分割字段范围来显示文本内容。还可以合并多个文件的内容。
-b
以字节为单位,显示行中指定字节范围的字符-c
以字符为单位,显示行中指定字符范围的字符-d
指定字段的分隔符,默认的字段分隔符为制表符“TAB”。字段分隔符必须加引号,单引号或者双引号都可以,分隔符与选项 -d
之间允许有空格-f
显示指定字段的内容-n
与 -b
选项连用,不分割多字节字符--output-delimiter=
指定输出的字段分隔符,分隔符和选项之间不允许有空格,分隔符可以不加引号,但是如果指定的分隔符是特殊符号必须加引号--help
显示指令的帮助信息--version
显示指令的版本信息--complement
用来排除指定范围的字符内容,实际的效果与单词 complement
的含义不一致,只能认为老外的理解力逆天了!
三、命令示例
根据指定的字节范围显示指定文件中的内容
文件 text.txt 的内容如下:
[root@htlwk0001host test]# cat text.txt
hello shell world!
dfdskklllllf
dfsfdsf
shell world
sdffdsfdsfd
dfsfdfdsfds
fsdfdsfdsfdsf
fdsfdsfdsfd
显示文件 text.txt 内容中每行的第 1 个到第 8 个字节的内容:
[root@htlwk0001host test]# cut -b1-8 text.txt
hello sh
dfdskkll
dfsfdsf
shell wo
sdffdsfd
dfsfdfds
fsdfdsfd
fdsfdsfd
注:-b
表示以字节为单位,显示行中指定字节范围的字符
显示文件 text.txt 内容中每行第 1 个字节和第 8 个字节的字符:
[root@htlwk0001host test]# cut -b1,8 text.txt
hh
dl
d
so
sd
ds
fd
fd
指定字段分隔符,显示指定字段的内容
其实就是自定义分隔符,将每行文本内容进行分割,然后选取分割后的某些字段的内容进行显示。
[root@linuxcool ~]# cat student2.txt
No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98
指定分号 ;
作为分隔符,显示第 2
个字段的内容:
[root@linuxcool ~]# cut -f2 -d";" student2.txt
Name
tom
jack
alex
注:字段分隔符,可以不加引号,分隔符与选项 -d
之间允许有空格。
默认字段分隔符是制表符 TAB
,所以文本内容每个字段已经使用 TAB
分割,可以直接使用选项 -f
显示指定字段的内容:
[root@linuxcool ~]# cat student.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
使用 -f
选项显示第 2
个字段的内容:
[root@linuxcool ~]# cut -f 2 student.txt
Name
tom
jack
alex
显示第 2
个和第 3
个字段的内容:
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68
根据指定的字符范围显示指定文件中的内容
文件 test.txt
的内容如下所示:
[root@linuxcool ~]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
显示第 1
个字符到第 3
个字符的内容:
[root@linuxcool ~]# cut -c1-3 test.txt
abc
abc
abc
abc
abc
显示每行前 2
个字符的内容:
[root@linuxcool ~]# cut -c-2 test.txt
ab
ab
ab
ab
ab
显示从第 5
个字符开始到结尾的内容:
[root@linuxcool ~]# cut -c5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
显示指定字段以外的字段的内容
可以使用选项 --complement
提取指定字段之外的列,即打印除了第二列之外的列的内容:
[root@linuxcool ~]# cut -f2 --complement student.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
以指定的输出分隔符来分割输出内容中的字段
可以使用选项 --output-delimiter
来指定输出内容时的字段分隔符,例如,指定符合 #
作为输出的字段分隔符,如下所示:
[root@htlwk0001host test]# cut -d';' -f2,4 --output-delimiter='#' text2.txt
Name#Percent
tom#91
jack#87
alex#98
说明: -d';'
表示在输入的数据流中,以分号 ;
作为字段分隔符对每行的文本内容进行分割,而 --output-delimiter='#'
表示在输出内容的时候,以 #
作为字段的分隔符显示内容。
把文件 f1 和 f2 的内容合并起来,然后通过覆盖输出重定向符 >
将合并后的内容放入文件 f3 中,命令如下:
[root@htlwk0001host test]# cut f1 f2 > f3