19 liunx shell编程 字符串截取 cut:字段提取命令;提取列命令

在这里插入图片描述

cut:字段提取命令

语法格式:cut [参数] [文件]

常用参数

参数作用
-b以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c以字符为单位进行分割 , 仅显示行中指定范围的字符
-d自定义分隔符,分割列 ,默认为制表符”TAB”
-f提取第几列 , 与-d一起使用
-n取消分割多字节字符
- -complement补足被选择的字节、字符或字段 就是取反的意思。例如本来提取第二列,加上这个参数就是不要第二列

示例文本内容:

# 分隔符为空格
[userwin@MiWiFi-R3L-srv learn]$ vim student.txt 

No Name Mark Percent
01 tom   69   91
02 jack  71   87
03 alex  68   98

# 分隔符为tab
[userwin@MiWiFi-R3L-srv learn]$ vim student1.txt 

No      Name    Mark    Percent
01      tom     69      91
02      jack    71      87
03      alex    68      98

-f 提取第几列

[userwin@MiWiFi-R3L-srv learn]$ cut -f2 student.txt 
No Name Mark Percent 
01 tom   69   91 
02 jack  71   87 
03 alex  68   98 
[userwin@MiWiFi-R3L-srv learn]$ cut -f2 student1.txt 
Name
tom
jack
alex

提取多列

# 截取第二列和第四列
[userwin@MiWiFi-R3L-srv learn]$ cut -f2,4 student1.txt 
Name	Percent 
tom		91 
jack	87 
alex	98 

cut 不是用来提取列的吗?为什么上面结果不一样呢?
使用cut在不指定分隔符时,默认分隔符为tab

-d 自定义分隔符

[userwin@MiWiFi-R3L-srv learn]$ cut -f2 -d" " student.txt 
Name
tom
jack
alex

- -complement 补足被选择的字节、字符或字段 ;即取反

如愿以偿,第二列排除了

[userwin@MiWiFi-R3L-srv learn]$ cut -f2 --complement student1.txt 
No	Mark	Percent 
01	69	91 
02	71	87 
03	68	98 

-b 以字节为单位进行分割 ,仅显示行中指定直接范围的内容

注意:-b 表示字节;-c 表示字符;-f 表示定义字段。
N- :从第 N 个字节、字符、字段到结尾; N-M :从第 N 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、段; -M :从第 1 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段。

[userwin@MiWiFi-R3L-srv learn]$ vim byte.txt
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
# 截取第8列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b8 byte.txt 
1
1
1
1
1
1
1
1
1
1
#截取1-8列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b1-8 byte.txt 
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
# 截取7,8两列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b7-8 byte.txt 
01
01
01
01
01
01
01
01
01
01
截取第7列到最后一列字符
[userwin@MiWiFi-R3L-srv learn]$ cut -b7- byte.txt 
01111
01111
01111
01111
01111
01111
01111
01111
01111
01111

-c 以字符为单位进行分割 , 仅显示行中指定范围的字符

使用方法和-b 大致一致

[userwin@MiWiFi-R3L-srv learn]$ vim char.txt 

abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
[userwin@MiWiFi-R3L-srv learn]$ cut -c2 char.txt 
b
b
b
b
b
[userwin@MiWiFi-R3L-srv learn]$ cut -c2-5 char.txt 
bcde
bcde
bcde
bcde
bcde
[userwin@MiWiFi-R3L-srv learn]$ cut -c8- char.txt 
hijklmnopqrstuvwxyz 
hijklmnopqrstuvwxyz 
hijklmnopqrstuvwxyz 
hijklmnopqrstuvwxyz 
hijklmnopqrstuvwxyz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EngineerForSoul

你的鼓励是我孜孜不倦的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值