cut
文件内容查看,显示行中指定部分,删除文中指定字段,显示文中的内容,类似type命令
语法:
cut(选项)(参数)
选项
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
参数
文件:指定要进行内容过滤的文件
实例
[root@ localhost ~]# ll
total 28
-rw-------. 1 root root 1277 2019-09-17 22:18 anaconda-ks.cfg
-rw-r--r-- 1 root root 743 2020-01-09 09:13 ceshi.sh
-rw-r--r-- 1 root root 22 2020-01-09 09:13 hosts.txt
-rw-r--r-- 1 root root 1298 2020-01-08 20:46 keepalived.sh
-rw-r--r-- 1 root root 360 2020-01-10 09:48 mysql.sh
-rw-r--r-- 1 root root 69 2020-01-11 08:38 text.txt
-rw-r--r-- 1 root root 439 2020-01-08 20:43 wk.sh
[root@ localhost ~]# ll | cut -b 3
t
w
w
w
w
w
w
w
例如有一个学生报表信息,包含No、Name、Mark、Percent:
[root@ localhost ~]# cat text.txt
Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
“字节”定位中,取多字节字节(- 和,)
-b支持形如3-5的写法,而且多个定位之间用逗号隔开
[root@ localhost ~]# cut -b 2-4,8 text.txt
o N
1 t
2 j
3 a
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从索引小到大排序,然后再提取。所以颠倒顺序提取数据的方式不可行。
[root@ localhost ~]# cut -b 8,2-4 text.txt
amer
om
ack
lex
扩展 -num num-
[root@ localhost ~]# cut -b -4 text.txt
Name
tom
jack
alex
[root@ localhost ~]# cut -b 4- text.txt
e Mark Percent
69 91
k 71 87
x 68 98
不会重叠
[root@ localhost ~]# cut -b 4-,-4 text.txt
Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
[root@ localhost ~]# cut -b 4-8,3-7 text.txt
me Mar
m 69
ck 71
ex 68