1.命令作用
从每个文件中打印选定行的部分内容到标准输出(Print selected parts of lines from each FILE to standard output.)
2.命令语法
Usage: cut OPTION... [FILE]...
3.参数详解
OPTION:(注: 必须使用参数,无参数执行会报错)
- -b, --bytes=LIST,仅选择指定LIST的字节(按照字节提取)
- -c, --characters=LIST,仅选择指定LIST的字符(按照字符提取)
- -d, --delimiter=DELIM,使用DELIM代替TAB作为字段分隔符(默认分隔符是TAB)
- -f, --fields=LIST,仅选择指定LIST的字段;如未指定-s选项,还要打印任何不包含分隔符的行
- -n,使用-b参数时,使用-n参数不拆分多字节字符
- --complement,补充所选字节、字符或字段的集合(效果是打印所有的文件内容)
- -s, --only-delimited,不打印不包含分隔符的行
- --output-delimiter=STRING,使用STRING作为输出分隔符,默认是使用输入分隔符
注:当仅使用 -b,-c,-f 中的一个参数时,其后可用LIST作为参数值,每个LIST值由一个或多个用逗号分隔的单值或范围值组成。其单值或范围值可表示如下:
- N ,第N个字节、字符或字段,从1开始计数
- N,M,第N个和第M个字节、字符或字段,更多类似用逗号分隔
- N- ,从第N个字节、字符或字段到行尾
- N-M ,从第N个到第M个(包含M个)字节、字符或字段
- -M ,从第一个到第M个字节、字符或字段
4.常用用例
4.1.按字节和字符提取的区别
[root@node2 Desktop]# cat file1.txt
abcdef ghi
123456 789
你好吗 哈
[root@node2 Desktop]# cut -b 2 file1.txt
b
2
½
[root@node2 Desktop]# cut -c 2 file1.txt
b
2
好
[root@node2 Desktop]# cut -n -b 2 file1.txt
b
2
好
[root@node2 Desktop]#
提取说明:
- 内容是英文时,-b按字节和-c按字符提取是一样的;
- 但当内容是中文时,-b字节取一个字节是不能显示一个完整的字的,-c字符取就可取一个完整的字;
- 但当内容是中文时,-b与-n一起可用提取完整的字
4.2.使用分隔符提取之间字段
4.2.1.默认分隔符
[root@node2 Desktop]# cat file2.txt
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin
daemon x 2 2 daemon /sbin /sbin/nologin
adm x 3 4 adm /var/adm /sbin/nologin
lp x 4 7 lp /var/spool/lpd /sbin/nologin
[root@node2 Desktop]# cut -f 2 file2.txt
x
x
x
x
x
[root@node2 Desktop]#
提取说明:默认使用tab作为分隔符(注意不是空格)作为字段的分隔符,-f 2意思是提取第二个字段
4.2.2.指定分隔符
[root@node2 Desktop]# cat file3.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@node2 Desktop]# cut -d : -f 6 file3.txt
/root
/bin
/sbin
/var/adm
/var/spool/lpd
[root@node2 Desktop]#
提取说明:使用-d指定分隔符,-f 6提取第六个字段
4.2.3.存在没有分隔符的文件内容
[root@node2 Desktop]# cat file4.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
the is passwd file
[root@node2 Desktop]# cut -d : -f 3 file4.txt
0
1
2
3
4
the is passwd file
[root@node2 Desktop]# cut -s -d : -f 3 file4.txt
0
1
2
3
4
[root@node2 Desktop]#
提取说明:存在没有分隔符的文件内容,默认会显示,使用-s参数后,则会忽略不显示
4.3.按字节/字符/字段范围提取
4.3.1.字节/字符范围提取
[root@node2 Desktop]# cat file1.txt
abcdef ghi
123456 789
你好吗 哈
[root@node2 Desktop]# cut -b 1-2 file1.txt
ab
12
[root@node2 Desktop]# cut -c 3- file1.txt
cdef ghi
3456 789
吗 哈
[root@node2 Desktop]#
提取说明:-b,-c按照字节,字符范围提取,提取规则见"参数详解"的注意部分
4.3.2.字段范围提取
[root@node2 Desktop]# cat file2.txt
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin
daemon x 2 2 daemon /sbin /sbin/nologin
adm x 3 4 adm /var/adm /sbin/nologin
lp x 4 7 lp /var/spool/lpd /sbin/nologin
[root@node2 Desktop]# cut -f 2,6 file2.txt
x /root
x /bin
x /sbin
x /var/adm
x /var/spool/lpd
[root@node2 Desktop]# cut -f -3 file2.txt
root x 0
bin x 1
daemon x 2
adm x 3
lp x 4
[root@node2 Desktop]# cut -f 5- file2.txt
root /root /bin/bash
bin /bin /sbin/nologin
daemon /sbin /sbin/nologin
adm /var/adm /sbin/nologin
lp /var/spool/lpd /sbin/nologin
[root@node2 Desktop]#
提取说明:范围提取,详细规则见"参数详解"的注意部分