Linux(Centos 7.6)命令详解:cut

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]# 

提取说明:范围提取,详细规则见"参数详解"的注意部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值