linux整理-24Shell操作字符串

本文详细介绍Shell中常用的字符串操作方法,包括字符串截取、替换及长度获取等,适用于各种字符串处理需求,如从左边或右边截取特定部分,按指定字符替换,以及计算字符串长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell操作字符串

1、字符串截取

Linux中操作字符串,也是一项必备的技能。其中尤以截取字符串更加频繁,下面为大家介绍几种常用方式,截取字符串

1、#截取删除左边字符串(包括制定的分隔符),保留右边字符串
预先定义一个变量:WEBSITE=‘http://hadoop//centos/huangbo.html

[root@hadoop ~]# echo ${WEBSITE#*//}
结果:hadoop//centos/huangbo.html

2、##截取,删除左边字符串(包括指定的分隔符),保留右边字符串,和上边一个#不同的是,它一直找到最后,而不是像一个#那样找到一个就满足条件退出了。

[root@hadoop ~]# echo ${WEBSITE##*//}
结果:centos/huangbo.html

3、%截取,删除右边字符串(包括制定的分隔符),保留左边字符串

[root@hadoop ~]# echo ${WEBSITE%//*}
结果:http://hadoop

4、%%截取,删除右边字符串(包括指定的分隔符),保留左边字符串,和上边一个%不同的是,它一直找到最前,而不是像一个%那样找到一个就满足条件退出了。

[root@hadoop ~]# echo ${WEBSITE%%//*}
结果:http:

总结以上四种方式
#去掉左边,最短匹配模式, ##最长匹配模式。
% 去掉右边,最短匹配模式, %%最长匹配模式

5、从左边第几个字符开始,以及截取的字符的个数

[root@hadoop ~]# echo ${WEBSITE:2:2}
结果:tp

6、从左边第几个字符开始,一直到结束

[root@hadoop ~]# echo ${WEBSITE:2}  
结果:tp://hadoop//centos//huangbo.html

7、从右边第几个字符开始,以及字符的个数

[root@hadoop ~]# echo ${WEBSITE:0-4:2}
结果:ht

8、从右边第几个字符开始,一直到结束

[root@hadoop ~]# echo ${WEBSITE:0-4}
结果:html

9、利用awk进行字符串截取

[root@hadoop ~]# echo $WEBSITE | awk '{print substr($1,2,6)}'   
结果:ttp://

10、利用cut进行字符串截取

[root@hadoop ~]# echo $WEBSITE | cut -b 1-4
http
[root@hadoop ~]# echo $WEBSITE | cut -c 1-4
http
[root@hadoop ~]# echo $WEBSITE | cut -b 1,4
hp
[root@hadoop ~]# echo $WEBSITE | cut -c 1,4
hp

11、获取最后几个字符

[root@hadoop ~]# echo ${WEBSITE:(-3)}
结果:tml

12、截取从倒数第3个字符后的2个字符

[root@hadoop ~]# echo ${WEBSITE:(-3):2}
结果:tm

13、expr截取
在这里插入图片描述

2、字符串替换

使用格式:

${parameter/pattern/string}

例子:
定义变量VAR:

[linux@linux ~]$ VAR="hello tom, hello kitty, hello xiaoming"

替换第一个hello:

[linux@linux ~]$ echo ${VAR/hello/hi}
hi tom, hello kitty, hello xiaoming

替换所有hello:

[linux@linux ~]$ echo ${VAR//hello/hi}
hi tom, hi kitty, hi xiaoming
3、获取字符串长度

在此为大家提供五种方式获取某字符串的长度

1、使用wc -L命令

[root@hadoop ~]# echo ${WEBSITE} |wc -L
35

2、使用expr的方式去计算

[root@hadoop ~]# expr length ${WEBSITE}
35

3、通过awk + length的方式获取字符串长度

[root@hadoop ~]# echo ${WEBSITE} | awk '{print length($0)}'       
35

4、通过awk的方式计算以""分隔的字段个数

[root@hadoop ~]# echo ${WEBSITE} |awk -F "" '{print NF}'        
35

5、通过#的方式获取字符串(最简单,最常用)

[root@hadoop ~]# echo ${#WEBSITE}

35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值