说明
cut命令用于从文件的每一行截取一段并输出。
格式
cut [option] [filename]
常用参数说明
- -b:以字节为单位进行分割
- -n:取消分割多字节字符,与选项-b一起使用,比如中文
- -c:以字符为单位进行分割
- -d:自定义分隔符,默认以tab作为分隔符
- -f:与选项-d一起使用,指定显示哪个区域
指定截取范围
- N:第N个字节、字符或字段
- N-:从第N个字节、字符或字段开始直到行尾
- N-M:从第N个到第M个字节、字符或字段
- -M:从行首到第M个字节、字符或字段
示例
1、以字符作为分隔符
[root@localhost ~]# cat test.txt
Hello World
I am is xiaohai
[root@localhost ~]# cut -b 3 test.txt #显示每行的第三个字符
l
a
[root@localhost ~]# cut -b 3-5 test.txt #显示每行3-5的字符
llo
am
[root@localhost ~]# cut -b 3- test.txt #显示从第3个字符到行尾
llo World
am is xiaohai
[root@localhost ~]# cut -b -3 test.txt #从行首到第3ge字符
Hel
I a
[root@localhost ~]# cut -b -3,3- test.txt #这样会显示完整行,但是第三个位置的字符不会重复
Hello World
I am is xiaohai
[root@localhost ~]# cut -b 3-5,1 test.txt #就算我们指定的数字顺序不一致,但是显示出来也是有先后顺序的
Hllo
Iam
2、以字符分割
对应英文字母来说,字节和字符风没什么区别,但是对于中文,那么以字符作为分割就会出现问题
[root@localhost ~]# cat test.txt
Hello World
I am is xiaohai
每天必须六点起床
[root@localhost ~]# cut -b 2-5 test.txt #按照字节分割,中文字符显示出现问题
ello
am
¯
[root@localhost ~]# cut -c 2-5 test.txt #以字符的方式来进行分割,正确
ello
am
天必须六
[root@localhost ~]# cut -nb 2-5 test.txt #如果要按照字节来分割,那么可以跟-n参数一起使用也能正常显示
ello
am
天必须六
3、自定义分隔符
[root@localhost ~]# cat test.txt
name,Age,Address,Num
ZhangHi,20,SiChuan,100
YangLiu,18,BeiJing,99
LiSi,21,ShangHai,10
[root@localhost ~]# cut -d , -f 1 test.txt #分隔符为逗号,-f指定显示的区域
name
ZhangHi
YangLiu
LiSi
[root@localhost ~]# cut -d , -f 2 test.txt
Age
20
18
21
[root@localhost ~]# cut -d , -f 4 test.txt
Num
100
99
10