cut:从文本中截取文件内容

xiaohai 2021-06-04 08:29:12 2657人围观 标签: Linux 
简介cut命令用于从文件的每一行截取一段并输出。
说明

  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